-
-
- {person.completeName}
-
+
+
+
-
-
- {person.position}
-
-
-
-
+
+ {person.completeName}
-
- );
-}
-export default function PopupPortrait({ person }) {
- const [offsets, setOffsets] = useState([0, 0]);
- let [isPopupOpen, setIsPopupOpen] = useState(false);
-
- return (
-
-
setIsPopupOpen(false)}
- trigger={
-
-
-
- }
- onOpen={() => {
- setIsPopupOpen(true);
- }}
- contentStyle={contentStyle}
- overlayStyle={overlayStyle}
- position={"center center"}
- offsetX={offsets[0]}
- offsetY={offsets[1]}
- >
-
- {
- setIsPopupOpen(false);
- }}
- >
-
-
-
-
+
+ {person.position}
+
+
);
}
diff --git a/src/components/about/SocialMediaContacts.tsx b/src/components/about/SocialMediaContacts.tsx
deleted file mode 100644
index b8208404d..000000000
--- a/src/components/about/SocialMediaContacts.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import styles from "./styles.module.css";
-import Link from "@docusaurus/Link";
-import GHPicture from "@site/static/img/socialmedias/GH.svg";
-import LinkedInPicture from "@site/static/img/socialmedias/LinkedIn.svg";
-import XPicture from "@site/static/img/socialmedias/X.svg";
-
-export default function SocialMediaContacts({ person }) {
- return (
- <>
-
-
- {person.onGithub === "true" ? (
- { }
- ) : (
- null
- )}
-
- {person.onLinkedIn === "true" ? (
-
{
}
- ) : (
- null
- )}
- {person.onX === "true" ? (
-
{
}
- ) : (
- null
- )}
-
-
-
- {person.githubName}
-
-
- >
- );
-}
diff --git a/src/components/about/SubTeam.tsx b/src/components/about/SubTeam.tsx
deleted file mode 100644
index bc3d840af..000000000
--- a/src/components/about/SubTeam.tsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import styles from "./styles.module.css";
-import PopupPortrait from "./SmallPortraitCard";
-
-export default function SubTeam({
- subTeamName,
- subTeam
-}) {
- return (
-
-
{subTeamName}
-
-
- {subTeam.map((person, index) => (
-
-
-
- ))}
-
-
-
- );
-}
diff --git a/src/components/about/Team/Florence.md b/src/components/about/Team/Florence.md
deleted file mode 100644
index e2bb2ba10..000000000
--- a/src/components/about/Team/Florence.md
+++ /dev/null
@@ -1,6 +0,0 @@
-Florence is a Scientific Software Engineer at QuantStack.
-
-After a PhD in Physics, she has been working as a post-doctoral researcher in different academic laboratories. She then worked as a research engineer at Vulcain Ingenierie's company.
-
-Since she joinded QuantStack, she has started to contribute to the Jupyter Project, most particularly to JupyterLab,
-and to some extensions like the
jupyterlab-theme-editor , to ipyleaflet and to nbdime.
\ No newline at end of file
diff --git a/src/components/about/Team/Ian.md b/src/components/about/Team/Ian.md
deleted file mode 100644
index 1d69c7ff7..000000000
--- a/src/components/about/Team/Ian.md
+++ /dev/null
@@ -1,5 +0,0 @@
-Ian Thomas is a Scientific Software Developer at QuantStack. He holds a BA in Physics from Oxford University and PhD in ocean modeling from the University of Southampton.
-
-He has particular interest in data analysis and visualization, leaning towards solving mathematical and geometric problems.
-
-Ian has many years' experience as an open-source contributor. He is a core maintainer of
Bokeh , a library for interactive visualization in web browsers, and the lead maintainer of
ContourPy , a Python/C++ library for calculating contours. He has also made significant contributions to
Matplotlib and
Datashader .
diff --git a/src/components/about/Team/Johan.md b/src/components/about/Team/Johan.md
deleted file mode 100644
index 33993cc58..000000000
--- a/src/components/about/Team/Johan.md
+++ /dev/null
@@ -1,8 +0,0 @@
-
-Johan Mabille is a Technical Director specialized in high-performance computing in C++.
-He holds master's degree in computer science from Centrale-Supelec.
-As an open source developer, Johan coauthored
xtensor ,
xeus , and
xsimd .
-
-He is also involved in the development of
mamba .
-
-Prior to joining QuantStack, Johan was a quant developer at HSBC.
\ No newline at end of file
diff --git a/src/components/about/Team/Matthias.md b/src/components/about/Team/Matthias.md
deleted file mode 100644
index fa734749e..000000000
--- a/src/components/about/Team/Matthias.md
+++ /dev/null
@@ -1,5 +0,0 @@
-Matthias is Director of Business Development at QuantStack.
-
-He began his career studying Physics and Geophysics developing a passion for numerical computing and open-source software. After his PhD and a PostDoc, Matthias committed fully to professional software development and worked with many of the world’s leading IT companies. Accumulating over 15 years of experience in both academic and industry settings, he has developed software for a wide range of projects, from personal initiatives to startup products and large enterprise systems, and has successfully led teams in building and delivering complex solutions.
-
-In addition to with a strong background in purely functional programming. He is an active contributor to several popular open-source projects and has also organized community events.
diff --git a/src/components/about/Team/Meriem.md b/src/components/about/Team/Meriem.md
deleted file mode 100644
index 8ff6bf4f7..000000000
--- a/src/components/about/Team/Meriem.md
+++ /dev/null
@@ -1,7 +0,0 @@
-Meriem Ben Ismail is a Software Engineering Intern at QuantStack.
-
-She is currently a final-year undergraduate student pursing a software engineering degree at the national institute of applied sciences and technology in Tunisia. Her deep interests lie in Software Development, DevOps, and Machine Learning.
-
-Before joining Quantstack, Meriem gained extensive experience in Web Development, employing a range of frameworks and practices including DevOps.
-
-Additionally, she contributed to projects in Machine Learning and Computer Vision.
\ No newline at end of file
diff --git a/src/components/about/Team/Sylvain.md b/src/components/about/Team/Sylvain.md
deleted file mode 100644
index 3a7aa481d..000000000
--- a/src/components/about/Team/Sylvain.md
+++ /dev/null
@@ -1,5 +0,0 @@
-Sylvain Corlay is the founder and CEO of QuantStack. He holds a PhD in applied mathematics from University Paris VI.
-
-As an open-source developer, Sylvain Corlay is active in the Jupyter ecosystem. He is the co-creator of the Voilà dashboarding system and the Xeus C++ implementation of the Jupyter kernel protocol, and he maintains several other projects of the Jupyter stack. He is also a core contributor to conda-forge, and a several other scientific computing open-source projects, such as bqplot, xtensor, and ipyleaflet.
-
-Beyond QuantStack, Sylvain does a lot of volunteer work for the community, as a member of the board of directors of NumFOCUS, the general chair of JupyterCon 2023. He also co-organizes the PyData Paris Meetup.
\ No newline at end of file
diff --git a/src/components/about/Team/Trung.md b/src/components/about/Team/Trung.md
deleted file mode 100644
index 74693f676..000000000
--- a/src/components/about/Team/Trung.md
+++ /dev/null
@@ -1,8 +0,0 @@
-Le Duc Trung is a Scientific Software Developer at
-QuantStack. He holds a PhD on computational mechanics from Université Pierre-et-Marie-Curie (France).
-Before joining QuantStack, Trung worked as a research engineer at Mines ParisTech, CADLM and Safran Group.
-
-During his time at Safran, Trung was maintainer of
CoSApp , a modeling framework relying on the Python scientific stack. He also authored
CoSApp Lab , a toolbox for creating and deploying CoSApp-powered dashboard.
-
-As a personal project, Trung co-founded
Cast2cloud , a web interface for the finite element
-solver Cast3M.
diff --git a/src/components/about/Team/team.ts b/src/components/about/Team/team.ts
deleted file mode 100644
index 7825d2648..000000000
--- a/src/components/about/Team/team.ts
+++ /dev/null
@@ -1,564 +0,0 @@
-import AlexisMD from "@site/src/components/about/Team/Alexis.md";
-import AlexisAvatarUrl from "@site/static/img/avatars/Alexis.png";
-import AnastasiiaMD from "@site/src/components/about/Team/Anastasiia.md";
-import AnastasiiaAvatarUrl from "@site/static/img/avatars/Anastasiia.png";
-import AndreasMD from "@site/src/components/about/Team/Andreas.md";
-import AndreasAvatarUrl from "@site/static/img/avatars/Andreas.png";
-import AntoineMD from "@site/src/components/about/Team/Antoine.md";
-import AntoineAvatarUrl from "@site/static/img/avatars/Antoine2.png";
-import AnutoshMD from "@site/src/components/about/Team/Anutosh.md";
-import AnutoshAvatarUrl from "@site/static/img/avatars/Anutosh.png";
-import ArjunMD from "@site/src/components/about/Team/Arjun.md"
-import ArjunAvatarUrl from "@site/static/img/avatars/Arjun.png";
-import DavidMD from "@site/src/components/about/Team/David.md";
-import DavidAvatarUrl from "@site/static/img/avatars/David.png";
-import DarianMD from "@site/src/components/about/Team/Darian.md";
-import DarianAvatarUrl from "@site/static/img/avatars/Darian.png";
-import DenisaMD from "@site/src/components/about/Team/Denisa.md";
-import DenisaAvatarUrl from "@site/static/img/avatars/Denisa.png";
-import FlorenceMD from "@site/src/components/about/Team/Florence.md";
-import FlorenceAvatarUrl from "@site/static/img/avatars/Florence.png";
-import GabrielaMD from "@site/src/components/about/Team/Gabriela.md";
-import GabrielaAvatarUrl from "@site/static/img/avatars/Gabriela.png";
-import GregMD from "@site/src/components/about/Team/Greg.md";
-import GregAvatarUrl from "@site/static/img/avatars/Greg.png";
-import HindMD from "@site/src/components/about/Team/Hind.md";
-import HindAvatarUrl from "@site/static/img/avatars/Hind.png";
-import IanMD from "@site/src/components/about/Team/Ian.md";
-import IanAvatarUrl from "@site/static/img/avatars/Ian.png";
-import IsabelMD from "@site/src/components/about/Team/Isabel.md";
-import IsabelAvatarUrl from "@site/static/img/avatars/Isabel.png";
-import JeremyMD from "@site/src/components/about/Team/Jeremy.md";
-import JeremyAvatarUrl from "@site/static/img/avatars/Jeremy.png";
-import JoelMD from "@site/src/components/about/Team/Joel.md";
-import JoelAvatarUrl from "@site/static/img/avatars/Joel.png";
-import JohanMD from "@site/src/components/about/Team/Johan.md";
-import JohanAvatarUrl from "@site/static/img/avatars/Johan.png";
-import JulienMD from "@site/src/components/about/Team/Julien.md";
-import JulienAvatarUrl from "@site/static/img/avatars/Julien.png";
-import MartinMD from "@site/src/components/about/Team/Martin.md";
-import MartinAvatarUrl from "@site/static/img/avatars/Martin.png";
-import MatthiasMD from "@site/src/components/about/Team/Matthias.md";
-import MatthiasAvatarUrl from "@site/static/img/avatars/Matthias.png";
-import MeriemMD from "@site/src/components/about/Team/Meriem.md";
-import MeriemAvatarUrl from "@site/static/img/avatars/Meriem.png";
-import NicolasMD from "@site/src/components/about/Team/Nicolas.md";
-import NicolasAvatarUrl from "@site/static/img/avatars/Nicolas.png";
-import RomainMD from "@site/src/components/about/Team/Romain.md";
-import RomainAvatarUrl from "@site/static/img/avatars/Romain.png";
-import SandrineMD from "@site/src/components/about/Team/Sandrine.md";
-import SandrineAvatarUrl from "@site/static/img/avatars/Sandrine.png";
-import SergeMD from "@site/src/components/about/Team/Serge.md";
-import SergeAvatarUrl from "@site/static/img/avatars/Serge.png";
-import SylvainMD from "@site/src/components/about/Team/Sylvain.md";
-import SylvainAvatarUrl from "@site/static/img/avatars/Sylvain.png";
-import ThorstenMD from "@site/src/components/about/Team/Thorsten.md";
-import ThorstenAvatarUrl from "@site/static/img/avatars/Thorsten.png";
-import TrungMD from "@site/src/components/about/Team/Trung.md";
-import TrungAvatarUrl from "@site/static/img/avatars/Trung.png";
-
-
-export const coreTeam = [
- {
- completeName: "Thorsten Beier",
- firstName: "Thorsten",
- position: "Scientific Software Developer",
- onGithub: "true",
- onLinkedIn: "true",
- onX: "true",
- githubLink: "https://github.com/DerThorsten",
- XLink: "https://twitter.com/ThorstenBeier",
- LinkedInLink: "https://www.linkedin.com/in/thorsten-beier-95b121189/",
- githubName: "@derthorsten",
- avatarUrl: ThorstenAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: ThorstenMD,
- },
- {
- completeName: "Le Duc Trung",
- firstName: "Trung",
- position: "Scientific Software Developer",
- onGithub: "true",
- onLinkedIn: "true",
- onX: "false",
- githubLink: "https://github.com/trungleduc",
- LinkedInLink: "https://www.linkedin.com/in/ductrung-le/",
- XLink: "",
- githubName: "@trungleduc",
- avatarUrl: TrungAvatarUrl,
- distinctionTitle: ["Jupyter Distinguished Contributor"],
- distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
- subTeamName: "coreTeam",
- BioComponent: TrungMD,
- },
- {
- completeName: " Andreas Trawöger",
- firstName: "Andreas",
- position: "DevOps Engineer",
- onGithub: "true",
- onLinkedIn: "false",
- onX: "false",
- githubLink: "https://github.com/atrawog",
- LinkedInLink: "",
- XLink: "",
- githubName: "@atrawog",
- avatarUrl: AndreasAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: AndreasMD,
- },
- {
- completeName: "Denisa Checiu",
- firstName: "Denisa",
- position: "Scientific Software Developer",
- onGithub: "true",
- onLinkedIn: "true",
- onX: "true",
- githubLink: "https://github.com/DenisaCG",
- LinkedInLink: "https://www.linkedin.com/in/denisa-checiu-georgiana/",
- XLink: "https://twitter.com/DenisaCheciu",
- githubName: "DenisaCheciu",
- avatarUrl: DenisaAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: DenisaMD,
- },
- {
- completeName: "Joël Lamotte",
- firstName: "Joel",
- position: "Scientific Software Developer",
- onGithub: "true",
- onLinkedIn: "true",
- onX: "false",
- githubLink: "https://github.com/Klaim",
- LinkedInLink: "https://www.linkedin.com/in/a-jo%C3%ABl-lamotte-a5b09b85/",
- XLink: "",
- githubName: "@Klaim",
- avatarUrl: JoelAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: JoelMD,
- },
- {
- completeName: "Florence Haudin",
- firstName: "Florence",
- position: "Scientific Software Developer",
- onGithub: "true",
- onLinkedIn: "true",
- onX: "false",
- githubLink: "https://github.com/HaudinFlorence",
- LinkedInLink: "https://www.linkedin.com/in/florence-haudin-fr/",
- XLink: "",
- githubName: "@HaudinFlorence",
- avatarUrl: FlorenceAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: FlorenceMD,
- },
- {
- completeName: "Nicolas Brichet",
- firstName: "Nicolas",
- position: "Scientific Software Developer",
- onGithub: "true",
- onLinkedIn: "true",
- onX: "false",
- githubLink: "https://github.com/brichet",
- LinkedInLink: "https://www.linkedin.com/in/nicolas-brichet-a26369150/",
- XLink: "",
- githubName: "@brichet",
- avatarUrl: NicolasAvatarUrl,
- distinctionTitle: ["Jupyter Distinguished Contributor"],
- distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
- subTeamName: "coreTeam",
- BioComponent: NicolasMD,
- },
- {
- completeName: "Isabel Paredes",
- firstName: "Isabel",
- position: "Scientific Software Developer",
- onGithub: "true",
- onLinkedIn: "true",
- onX: "false",
- githubLink: "https://github.com/ihuicatl",
- LinkedInLink: "https://www.linkedin.com/in/isabel-paredes/",
- XLink: "",
- githubName: "@IsabelParedes",
- avatarUrl: IsabelAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: IsabelMD,
- },
- {
- completeName: "Gabriela Vives",
- firstName: "Gabriela",
- position: "User Experience Researcher and Designer",
- onGithub: "true",
- onLinkedIn: "true",
- onX: "false",
- githubLink: "https://github.com/GabrielaVives",
- LinkedInLink: "https://www.linkedin.com/in/gabriela-vives-831ba853/",
- XLink: "",
- githubName: "@GabrielaVives",
- avatarUrl: GabrielaAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: GabrielaMD,
- },
- {
- completeName: "Hind Montassif",
- firstName: "Hind",
- position: "Scientific Software Developer",
- onGithub: "true",
- onLinkedIn: "true",
- onX: "false",
- githubLink: "https://github.com/Hind-M",
- LinkedInLink: "https://www.linkedin.com/in/hindmontassif/",
- XLink: "",
- githubName: "@Hind-M",
- avatarUrl: HindAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: HindMD,
- },
- {
- completeName: "Julien Jerphanion",
- firstName: "Julien",
- position: "Scientific Software Developer",
- onGithub: "true",
- onLinkedIn: "true",
- onX: "true",
- githubLink: "https://github.com/jjerphan",
- LinkedInLink: "https://www.linkedin.com/in/jjerphan/",
- XLink: "https://twitter.com/jjerphan",
- githubName: "@jjerphan",
- avatarUrl: JulienAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: JulienMD,
- },
- {
- completeName: "Anutosh Bhat",
- firstName: "Anutosh",
- position: "Scientific Software Developer",
- onGithub: "true",
- onLinkedIn: "true",
- onX: "false",
- githubLink: "https://github.com/anutosh491",
- LinkedInLink: "https://www.linkedin.com/in/anutosh-bhat-66ba961a8/",
- XLink: "",
- githubName: "@anutosh491",
- avatarUrl: AnutoshAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: AnutoshMD,
- },
- {
- completeName: "Greg Mooney",
- firstName: "Greg",
- position: "Scientific Software Developer",
- onGithub: "true",
- onLinkedIn: "true",
- onX: "false",
- githubLink: "https://github.com/gjmooney",
- LinkedInLink: "https://www.linkedin.com/in/gjmooney/",
- XLink: "",
- githubName: "@gjmooney",
- avatarUrl: GregAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: GregMD,
- },
- {
- completeName: "Ian Thomas",
- firstName: "Ian",
- position: "Scientific Software Developer",
- onGithub: "true",
- onLinkedIn: "true",
- onX: "false",
- githubLink: "https://github.com/ianthomas23",
- LinkedInLink: "https://www.linkedin.com/in/ian-thomas-796814240/",
- XLink: "",
- githubName: "@ianthomas23",
- avatarUrl: IanAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: IanMD,
- },
- {
- completeName: "Meriem Ben Ismail",
- firstName: "Meriem",
- position: " Scientific Software Development Intern",
- onLinkedIn: "true",
- onGithub: "true",
- onX: "false",
- githubLink: "https://github.com/Meriem-BenIsmail",
- LinkedInLink: "https://www.linkedin.com/in/meriem-ben-ismail-163042230/",
- XLink: "",
- githubName: "@Meriem-BenIsmail",
- avatarUrl: MeriemAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: MeriemMD,
- },
- {
- completeName: "Alexis Placet",
- firstName: "Alexis",
- position: " Scientific Software Developer",
- onLinkedIn: "true",
- onGithub: "true",
- onX: "false",
- githubLink: "https://github.com/Alex-PLACET",
- LinkedInLink: "https://www.linkedin.com/in/alexisplacet/",
- XLink: "",
- githubName: "@Alex-PLACET",
- avatarUrl: AlexisAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: AlexisMD,
- },
- {
- completeName: "Anastasiia Sliusar",
- firstName: "Anastasiia",
- position: " Scientific Software Developer",
- onLinkedIn: "true",
- onGithub: "true",
- onX: "false",
- githubLink: "https://github.com/AnastasiaSliusar",
- LinkedInLink: "https://www.linkedin.com/in/anastasiiasliusar-bellis/",
- XLink: "",
- githubName: "@AnastasiaSliusar",
- avatarUrl: AnastasiiaAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: AnastasiiaMD,
- },
- {
- completeName: "Arjun Verma",
- firstName: "Arjun",
- position: " Scientific Software Development Intern",
- onLinkedIn: "true",
- onGithub: "true",
- onX: "true",
- githubLink: "https://github.com/arjxn-py",
- LinkedInLink:
- "https://www.linkedin.com/in/arjun-verma-758608226/",
- XLink: "https://x.com/ArjxnPy",
- githubName: "@arjxn-py",
- avatarUrl: ArjunAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: ArjunMD,
- },
- {
- completeName: "Antoine Pitrou",
- firstName: "Antoine",
- position: " Senior Software Developer",
- onLinkedIn: "true",
- onGithub: "true",
- onX: "false",
- githubLink: "https://github.com/pitrou",
- LinkedInLink:
- "https://www.linkedin.com/in/pitrou/?originalSubdomain=fr",
- XLink: "",
- githubName: "@pitrou",
- avatarUrl: AntoineAvatarUrl,
- distinctionTitle: ["Python Software Foundation Fellow"],
- distinctionLink: ["https://www.python.org/psf/fellows-roster/"],
- subTeamName: "coreTeam",
- BioComponent: AntoineMD,
- },
- {
- completeName: "Sandrine Pataut",
- firstName: "Sandrine",
- position: " Scientific Software Developer",
- onLinkedIn: "true",
- onGithub: "true",
- onX: "true",
- githubLink: "https://github.com/SandrineP",
- LinkedInLink:
- "https://www.linkedin.com/in/sandrinepataut/",
- XLink: "https://x.com/SPataut",
- githubName: "@SandrineP",
- avatarUrl: SandrineAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: SandrineMD,
- },
-];
-
-export const QSCollaboratorsTeam = [
- {
- completeName: "Serge Guelton",
- firstName: "Serge",
- position: "Scientific Software Developer",
- onGithub: "true",
- onLinkedIn: "true",
- onX: "false",
- githubLink: "https://github.com/serge-sans-paille",
- LinkedInLink: "",
- XLink: "",
- githubName: "@serge-sans-paille",
- avatarUrl: SergeAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "QSCollaboratorsTeam",
- BioComponent: SergeMD,
- },
- {
- completeName: "Romain Menegaux",
- firstName: "Romain",
- position: "Scientific Software Developer",
- onGithub: "true",
- onLinkedIn: "true",
- onX: "true",
- githubLink: "https://github.com/rmenegaux",
- LinkedInLink: "https://www.linkedin.com/in/romain-menegaux-88a147134/",
- XLink: "https://twitter.com/RomainMenegaux",
- githubName: "@trmenegaux",
- avatarUrl: RomainAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "QSCollaboratorsTeam",
- BioComponent: RomainMD
- },
-];
-
-export const leadershipTeam = [
- {
- completeName: "Sylvain Corlay",
- firstName: "Sylvain",
- position: "Chief Executive Officer",
- onGithub: "true",
- onLinkedIn: "true",
- onX: "true",
- githubLink: "https://github.com/SylvainCorlay",
- LinkedInLink: "https://www.linkedin.com/sylvaincorlay/?locale=en_US",
- XLink: "https://twitter.com/SylvainCorlay",
- githubName: "@SylvainCorlay",
- avatarUrl: SylvainAvatarUrl,
- distinctionTitle: ["ACM Software System Award"],
- distinctionLink: ["https://awards.acm.org/award_winners/corlay_8324973"],
- subTeamName: "LeadershipTeam",
- BioComponent: SylvainMD,
- },
- {
- completeName: "Johan Mabille",
- firstName: "Johan",
- position: "Project Director",
- onGithub: "true",
- onLinkedIn: "true",
- onX: "true",
- githubLink: "https://github.com/JohanMabille",
- LinkedInLink: "https://www.linkedin.com/in/johan-mabille/",
- XLink: "https://twitter.com/JohanMabille",
- githubName: "@JohanMabille",
- avatarUrl: JohanAvatarUrl,
- distinctionTitle: ["Jupyter Distinguished Contributor"],
- distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
- subTeamName: "LeadershipTeam",
- BioComponent: JohanMD,
- },
- {
- completeName: "Martin Renou",
- firstName: "Martin",
- position: "Project Director",
- onX: "true",
- onLinkedIn: "true",
- onGithub: "true",
- githubLink: "https://github.com/martinRenou",
- LinkedInLink: "https://www.linkedin.com/in/martin-renou",
- XLink: "https://twitter.com/martinRenou",
- githubName: "@martinRenou",
- avatarUrl: MartinAvatarUrl,
- distinctionTitle: ["Jupyter Distinguished Contributor"],
- distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
- subTeamName: "LeadershipTeam",
- BioComponent: MartinMD,
- },
- {
- completeName: "Jeremy Tuloup",
- firstName: "Jeremy",
- position: "Technical Director",
- onLinkedIn: "true",
- onGithub: "true",
- onX: "true",
- githubLink: "https://github.com/jtpio",
- LinkedInLink: "https://www.linkedin.com/in/jtuloup/",
- XLink: "https://twitter.com/jtpio",
- githubName: "@jtpio",
- avatarUrl: JeremyAvatarUrl,
- distinctionTitle: ["Jupyter Distinguished Contributor"],
- distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
- subTeamName: "LeadershipTeam",
- BioComponent: JeremyMD,
- },
-
- {
- completeName: "Afshin Darian",
- firstName: "Darian",
- position: "Technical Director",
- onGithub: "true",
- onLinkedIn: "true",
- onX: "false",
- githubLink: "https://github.com/afshin",
- LinkedInLink: "https://www.linkedin.com/in/afshindarian/",
- XLink: "",
- githubName: "@afshin",
- avatarUrl: DarianAvatarUrl,
- distinctionTitle: ["Jupyter Distinguished Contributor"],
- distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
- subTeamName: "LeadershipTeam",
- BioComponent: DarianMD,
- },
- {
- completeName: "David Brochart",
- firstName: "David",
- position: "Technical Director",
- onGithub: "true",
- onLinkedIn: "true",
- onX: "true",
- githubLink: "https://github.com/jtpio",
- LinkedInLink: "https://www.linkedin.com/in/david-brochart-4208721/",
- XLink: "https://twitter.com/davidbrochart",
- githubName: "@davidbrochart",
- avatarUrl: DavidAvatarUrl,
- distinctionTitle: ["Jupyter Distinguished Contributor"],
- distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
- subTeamName: "LeadershipTeam",
- BioComponent: DavidMD,
- },
- {
- completeName: "Matthias Meschede",
- firstName: "Matthias",
- position: "Director Business Development",
- onGithub: "true",
- onLinkedIn: "true",
- onX: false,
- githubLink: "https://github.com/mmesch",
- LinkedInLink: "https://www.linkedin.com/in/mmesch/",
- githubName: "@mmesch",
- avatarUrl: MatthiasAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "LeadershipTeam",
- BioComponent: MatthiasMD,
- },
-];
diff --git a/src/components/about/ValueCard.tsx b/src/components/about/ValueCard.tsx
deleted file mode 100644
index 1507c2633..000000000
--- a/src/components/about/ValueCard.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import styles from "./styles.module.css";
-
-export function ValueCard({ value }) {
- return (
-
- );
-}
-export default ValueCard;
diff --git a/src/components/about/Values/integrity.md b/src/components/about/Values/integrity.md
deleted file mode 100644
index a1b2890a5..000000000
--- a/src/components/about/Values/integrity.md
+++ /dev/null
@@ -1,2 +0,0 @@
-Our unwavering commitment to honesty and ethical conduct
-underpins our work, fostering trust, inclusivity, and respect.
diff --git a/src/components/about/Values/openness.md b/src/components/about/Values/openness.md
deleted file mode 100644
index 4e7a43dc5..000000000
--- a/src/components/about/Values/openness.md
+++ /dev/null
@@ -1,3 +0,0 @@
-The greatest achievements stem from uniting diverse minds.
-
-Working in the open fosters cooperation by removing collaboration barriers.
diff --git a/src/components/about/Values/optimism.md b/src/components/about/Values/optimism.md
deleted file mode 100644
index eceda4aca..000000000
--- a/src/components/about/Values/optimism.md
+++ /dev/null
@@ -1,4 +0,0 @@
-We embrace challenges with a positive outlook.
-
-Moonshots are impossible if you don’t believe they can be
-reached.
diff --git a/src/components/about/Values/science.md b/src/components/about/Values/science.md
deleted file mode 100644
index 15eb6fe76..000000000
--- a/src/components/about/Values/science.md
+++ /dev/null
@@ -1,3 +0,0 @@
-We are driven by the pursuit of discovery, dedicated to
-advancing science, and passionate about fostering education to
-empower future generations.
diff --git a/src/components/about/Values/valuesDetails.ts b/src/components/about/Values/valuesDetails.ts
deleted file mode 100644
index f2869551b..000000000
--- a/src/components/about/Values/valuesDetails.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import OpennessMD from "@site/src/components/about/Values/openness.md";
-import ScienceMD from "@site/src/components/about/Values/science.md";
-import IntegrityMD from "@site/src/components/about/Values/integrity.md";
-import OptimismMD from "@site/src/components/about/Values/optimism.md";
-import OpennessPicture from "@site/static/img/values/openness.svg";
-import SciencePicture from "@site/static/img/values/science.svg";
-import OptimismPicture from "@site/static/img/values/optimism.svg";
-import IntegrityPicture from "@site/static/img/values/integrity.svg";
-
-export const valuesDetails = [
- {
- name: "Science",
- alt: "Icon representing science, displaying an atom",
- DescriptionMD: ScienceMD,
- pictureComponent: SciencePicture,
- },
- {
- name: "Openness",
- alt: "Icon representing openness, four people connected together.",
- DescriptionMD: OpennessMD,
- pictureComponent: OpennessPicture,
- },
- {
- name: "Integrity",
- alt: "Icon representing integrity, with an heart inside a hand",
- DescriptionMD: IntegrityMD,
- pictureComponent: IntegrityPicture,
- },
- {
- name: "Optimism",
- alt: "Icon representing optimism, with a smiling face ",
- DescriptionMD: OptimismMD,
- pictureComponent: OptimismPicture,
- },
-];
diff --git a/src/components/about/index.tsx b/src/components/about/index.tsx
deleted file mode 100644
index 2a307e33b..000000000
--- a/src/components/about/index.tsx
+++ /dev/null
@@ -1,53 +0,0 @@
-import styles from "./styles.module.css";
-import { coreTeam, QSCollaboratorsTeam, leadershipTeam } from "./Team/team";
-import FourValues from "./FourValues";
-import SubTeam from "./SubTeam";
-import LinkToContact from "../home/LinkToContact";
-
-export function About() {
- return (
-
-
-
-
-
-
-
-
Meet the QuantStack team
-
- A team of outliers, leaders in software projects adopted at the
- global scale, benefiting millions of people worldwide.
-
-
-
-
-
-
-
-
Join the team
- QuantStack is seeking talents in the open-source scientific computing
- community. Join a team committed to open-science and free software.
-
-
-
- );
-}
diff --git a/src/components/about/styles.module.css b/src/components/about/styles.module.css
index 99d05377d..3decbd913 100644
--- a/src/components/about/styles.module.css
+++ b/src/components/about/styles.module.css
@@ -1,20 +1,49 @@
+.project_dialog_overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: var(--ifm-overlay-background);
+ z-index: 1000;
+}
+
+.project_dialog_content {
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ background-color: var(--ifm-bg-neutral);
+ border: 1px solid #ccc;
+ box-shadow: var(--ifm-shadow-dialog);
+ border-radius: 20px;
+ z-index: 4000;
+ overflow: hidden;
+}
+
.small_portrait_card {
- width: 279px;
- height: 400px;
- background-color: white;
- color: var(--ifm-color-primary-p2);
- border-radius: 8px;
- box-shadow: 0px 0px 8px 1px #c8c8c7;
+ height: 320px;
padding: var(--ifm-spacing-lg) var(--ifm-spacing-xs);
- margin-bottom: var(--ifm-spacing-xl);
+ align-items: center;
}
-.small_portrait_card:hover {
- border: solid 1px gray;
- cursor: pointer;
- text-decoration: #0000EE underline;
+.value_icon {
+ display: flex;
+ justify-content: center;
+ margin-bottom: var(--ifm-spacing-lg);
}
+:global([data-section-bg="dark"]) .value_icon svg {
+ filter: brightness(0) invert(1);
+}
+
+:global([data-section-bg="dark"]) .value_header {
+ color: white;
+}
+
+:global([data-section-bg="dark"]) .value_text p {
+ color: white;
+}
.value_text p {
font-family: var(--ifm-font-family-roboto);
@@ -24,7 +53,8 @@
line-height: 20px;
letter-spacing: 0.25px;
color: var(--ifm-text-color-on-primary-p1);
- text-align: justify;
+ text-align: left;
+ margin-bottom: var(--ifm-spacing-xs);
}
div .row {
@@ -32,14 +62,15 @@ div .row {
margin-right: 0;
}
-.bio_container {
+.bio_container p {
font-family: var(--ifm-font-family-roboto);
- font-size: 14px;
+ font-size: 16px;
font-style: normal;
font-weight: 400;
line-height: 24px;
letter-spacing: 0.5px;
- color: var(--ifm-color-primary-p2);
+ color: var(--ifm-color-primary-p2);
+ text-align: justify;
}
.small_card_complete_name {
@@ -51,13 +82,12 @@ div .row {
line-height: 24px;
letter-spacing: 0.15px;
margin: var(--ifm-spacing-xs) 0;
- width: 100%
+ width: 100%;
}
.small_card_position {
font-size: 16px;
font-family: var(--ifm-font-family-roboto);
- color: var(---ifm-text-color);
font-style: normal;
font-weight: 400;
line-height: 24px;
@@ -70,7 +100,6 @@ div .row {
.large_card_complete_name {
font-family: var(--ifm-font-family-roboto);
font-size: 28px;
- color: var(---ifm-text-color);
font-style: normal;
font-weight: 400;
line-height: 40px;
@@ -78,7 +107,7 @@ div .row {
}
.large_card_position {
- font-size: var(--ifm--font-size-normal);
+ font-size: var(--ifm-font-size-normal);
font-family: var(--ifm-font-family-roboto);
color: var(--ifm-color-primary-p2);
font-style: normal;
@@ -87,10 +116,6 @@ div .row {
letter-spacing: 0.5px;
}
-a {
- color: var(--ifm-color-primary-p2);
-}
-
div .large_card_position {
color: var(--ifm-color-primary-p2);
}
@@ -100,7 +125,7 @@ div .large_card_position {
margin-bottom: 10px;
}
-.githubname {
+.GitHubName {
font-size: 16px;
font-family: var(--ifm-font-family-roboto);
font-style: normal;
@@ -135,23 +160,19 @@ div .join_the_team_text {
padding-right: 5px;
}
+
+
@media only screen and (max-width: 996px) {
/*Mobile*/
.value_card {
- height: 420px;
- width: 264px;
padding: var(--ifm-spacing-lg) var(--ifm-spacing-md);
- border-radius: 8px;
- box-shadow: 0px 0px 8px 1px #c8c8c7;
- background-color: var(--ifm-color-primary-p1);
- margin-bottom: var(--ifm-spacing-xl);
}
.value_header {
- font-family: var(--ifm-font-family-rubik-one);
+ font-family: var(--ifm-font-family-roboto);
font-size: 20px;
font-style: normal;
- font-weight: 400;
+ font-weight: 700;
line-height: 20px;
text-align: center;
margin-bottom: var(--ifm-spacing-xl);
@@ -159,16 +180,10 @@ div .join_the_team_text {
}
.value_text p {
- text-align: justify;
+ text-align: left;
padding: 0;
}
- .large_portrait_card {
- width: 100%;
- height: 100%;
- padding: var(--ifm-spacing-xl) var(--ifm-spacing-xl);
- }
-
.subteam_container {
margin: var(--ifm-spacing-3xl) var(--ifm-spacing-2xl);
}
@@ -191,23 +206,39 @@ div .join_the_team_text {
}
}
+@media only screen and (max-width: 500px) {
+ /*Mobile*/
+ .large_portrait_card {
+ width: 90vw;
+ overflow: auto;
+ padding: var(--ifm-spacing-xl) var(--ifm-spacing-xl);
+ }
+}
+
+@media (min-width: 500px) and (max-width: 996px) {
+ /*Tablet*/
+ .large_portrait_card {
+ width: 80vw;
+ overflow: auto;
+ padding: var(--ifm-spacing-xl) var(--ifm-spacing-xl);
+ }
+}
+
@media only screen and (min-width: 996px) {
/*Desktop*/
.value_card {
- height: 460px;
- width: 264px;
padding: var(--ifm-spacing-2xl) var(--ifm-spacing-lg);
- border-radius: 8px;
- box-shadow: 0px 0px 8px 1px #c8c8c7;
- background-color: var(--ifm-color-primary-p1);
- margin-bottom: var(--ifm-spacing-xl);
+ }
+
+ .values_row > li {
+ flex: 1 1 0;
}
.value_header {
- font-family: var(--ifm-font-family-rubik-one);
+ font-family: var(--ifm-font-family-roboto);
font-size: var(--ifm-font-size-secondary-title);
font-style: normal;
- font-weight: 400;
+ font-weight: 700;
line-height: 28px;
text-align: center;
margin-bottom: var(--ifm-spacing-xl);
@@ -215,12 +246,12 @@ div .join_the_team_text {
}
.large_portrait_card {
- width: 1000px;
+ width: 976px;
padding: var(--ifm-spacing-xl) var(--ifm-spacing-2xl);
}
.subteam_container {
- margin: var(--ifm-spacing-5xl) var(--ifm-spacing-6xl);
+ margin: var(--ifm-spacing-5xl) 0;
}
.team_description {
diff --git a/src/components/about/valuesDetails.ts b/src/components/about/valuesDetails.ts
new file mode 100644
index 000000000..40b4e1059
--- /dev/null
+++ b/src/components/about/valuesDetails.ts
@@ -0,0 +1,32 @@
+import OpennessPicture from "@site/static/img/values/openness.svg";
+import SciencePicture from "@site/static/img/values/science.svg";
+import OptimismPicture from "@site/static/img/values/optimism.svg";
+import IntegrityPicture from "@site/static/img/values/integrity.svg";
+import React from "react";
+
+export const valuesDetails = [
+ {
+ name: "Science",
+ alt: "Icon representing science, displaying an atom",
+ DescriptionMD: () => React.createElement("p", null, "We come from research. Most of us have PhDs. We approach every problem rigorously — whether it's a SAT solver for package resolution or a CRDT algorithm for collaborative CAD. Good science makes good software."),
+ pictureComponent: SciencePicture,
+ },
+ {
+ name: "Openness",
+ alt: "Icon representing openness, four people connected together.",
+ DescriptionMD: () => React.createElement("p", null, "We build in the open, not because it's fashionable, but because it's right. Open-source removes the barriers that keep good tools from the people who need them most. Our work belongs to the community."),
+ pictureComponent: OpennessPicture,
+ },
+ {
+ name: "Integrity",
+ alt: "Icon representing integrity, with an heart inside a hand",
+ DescriptionMD: () => React.createElement("p", null, "We say what we mean in code reviews, in client conversations, and in our roadmaps. We don't oversell. We don't hide complexity. If we don't know, we say so. Trust is built slowly and lost quickly."),
+ pictureComponent: IntegrityPicture,
+ },
+ {
+ name: "Optimism",
+ alt: "Icon representing optimism, with a smiling face ",
+ DescriptionMD: () => React.createElement("p", null, "Running Python in a browser with no server — on 2 servers for 400,000 students — sounded impossible until it wasn't. We take on the hard problems because we believe they're worth solving. The best open-source tools are still ahead of us."),
+ pictureComponent: OptimismPicture,
+ },
+];
diff --git a/src/components/blog/BlogpostCard.tsx b/src/components/blog/BlogpostCard.tsx
deleted file mode 100644
index 69f14fc0d..000000000
--- a/src/components/blog/BlogpostCard.tsx
+++ /dev/null
@@ -1,65 +0,0 @@
-// src/components/Card.js
-
-import React from "react";
-import styles from "./styles.module.css";
-import Link from "@docusaurus/Link";
-import useBaseUrl from "@docusaurus/useBaseUrl";
-
-export default function BlogpostCard({ blogpost, timeIndex }) {
- return (
-
-
-
-
-
-
-
-
-
-
{blogpost.title}
-
-
-
-
- {blogpost.summary.length < 200
- ? blogpost.summary
- : blogpost.summary.substring(0, 200) + "..."}
-
-
-
-
-
-
{blogpost.date}
-
{blogpost.authors}
-
-
-
-
-
- );
-}
diff --git a/src/components/blog/_config.yml b/src/components/blog/_config.yml
deleted file mode 100644
index fabb6ff46..000000000
--- a/src/components/blog/_config.yml
+++ /dev/null
@@ -1,839 +0,0 @@
-copyright:
- author: QuantStack
- url: https://quantstack.net
- type_title: All rights reserved
-
-blog:
- - url: https://medium.com/@QuantStack/introducing-mamba-2-0-0e8d5c6d1d0c
- title: "Introducing Mamba 2.0"
- image: https://miro.medium.com/v2/resize:fit:828/format:webp/0*q3RzcOZXWZzyfDIG
- summary: "We are excited to present the first release candidate of Mamba 2.0, a significant upgrade to the mamba package manager. This update brings considerable enhancements for both users and developers, following an extensive year-long development effort."
- date: July 16, 2024
- authors: Antoine Prouvost, Joel Lamotte, Johan Mabille, Hind Montassif
-
- - url: https://medium.com/@QuantStack/quantstack-open-source-internship-program-049755b6d44b
- title: "QuantStack open-source internship program"
- image: https://miro.medium.com/v2/resize:fit:2000/format:webp/0*3Drh_jUVUNWjdFfe
- summary: "Today, we are announcing a new internship program that aims to empower a new cohort of open-source contributors and future maintainers to make an impact within our ecosystem."
- date: July 9, 2024
- authors: Sylvain Corlay
-
- - url: https://medium.com/@QuantStack/jupytercad-2-0-4b9c4e18d22a
- title: "JupyterCAD 2.0"
- image: https://miro.medium.com/v2/resize:fit:828/format:webp/0*F-C-m6ksqJ3MGU7b
- summary: "We are thrilled to introduce JupyterCAD 2.0, the newest version of the JupyterLab-based CAD modeler."
- date: July 5, 2024
- authors: Trung Le, Martin Renou
-
- - url: https://blog.jupyter.org/jupytergis-d63b7adf9d0c
- title: "JupyterGIS"
- image: https://miro.medium.com/v2/resize:fit:1400/format:webp/1*IkYCf2cbk3SaxaROQ0eUsA.png
- summary: "We are thrilled to announce that the European Space Agency (ESA) is funding our proposal “Real-time collaboration and collaborative editing for GIS workflows with Jupyter and QGIS.”"
- date: June 12, 2024
- authors: Sylvain Corlay, Anne Fouilloux, Monika Weissschnur
-
- - url: https://medium.com/@SylvainCorlay/commit-cdf57415b94b
- title: "Commit!"
- image: https://miro.medium.com/v2/0*3gKzwBOWprSRs35k
- summary: "Open-source projects are not just about the latest exciting updates and features, but also the principles and people that drive these projects to success. In this blog post, I reflect on the dynamics…"
- date: May 29, 2024
- authors: Sylvain Corlay
-
- - url: https://quantstack.net/fanny.html
- title: "In memoriam: Fanny Loustau Chartez"
- image: https://quantstack.net/img/avatar/Fanny@2x.jpg
- summary: "It is with great sadness that we announce the passing of our colleague and friend, Fanny Loustau Chartez, who served as the Chief Financial Officer of QuantStack since 2021."
- date: May 16, 2024
- authors: Sylvain Corlay
-
- - url: https://medium.com/@PyDataParis/announcing-pydata-paris-2024-700220accc72
- title: "Announcing PyData Paris 2024"
- image: https://miro.medium.com/v2/resize:fit:1100/format:webp/0*jYrq6Du7WpJDOTUf
- summary: "We are thrilled to announce the upcoming PyData Paris 2024, the gathering of the open-source data science and AI/ML community in France. PyData Paris will take place at the Cité des Sciences from September 25 to September 26, 2024."
- date: March 11, 2024
- authors: Sylvain Corlay
-
- - url: https://blog.jupyter.org/meet-xeus-r-a-future-proof-jupyter-kernel-for-r-1adc5fdd09ab
- title: "Meet Xeus-R: a future-proof Jupyter kernel for R"
- image: https://miro.medium.com/v2/resize:fit:1400/format:webp/1*cFmKZKFycjvG1v_Xub4snQ.png
- summary: "Today, we, a collaborative team led by Romain François and supported by QuantStack, are thrilled to announce the initial release of Xeus-R, a future-proof Jupyter kernel for R."
- date: January 22nd, 2024
- authors: Romain François
-
- - url: https://medium.com/@QuantStack/quantstack-2023-in-review-94fea0a35520
- title: "QuantStack: 2023 in review"
- image: https://miro.medium.com/v2/resize:fit:2000/format:webp/0*rwQcR7xvAIr_7pzY
- summary: "Since QuantStack was founded in 2016, we have remained committed to releasing our work under permissive open-source licenses. Here are some highlights of the 2023 achievements. Buckle up!"
- date: January 3rd, 2024
- authors: Sylvain Corlay
-
- - url: https://blog.jupyter.org/recent-keyboard-navigation-improvements-in-jupyter-4df32f97628d
- title: Recent keyboard navigation improvements in Jupyter
- image: https://upload.wikimedia.org/wikipedia/commons/thumb/5/5e/W3C_icon.svg/320px-W3C_icon.svg.png
- summary: "Upcoming versions of JupyterLab (4.1.0) and Notebook (7.1.0) will include major keyboard accessibility fixes."
- date: December 16th, 2023
- authors: Nicolas Brichet, Gabriel Fouasnon
-
- - url: https://blog.jupyter.org/and-voici-e02367197ba2
- title: And Voici!
- image: https://miro.medium.com/v2/resize:fit:1400/format:webp/1*Tjh9IaZrdJhTQzxyIOgI8Q.png
- summary: "Voici (meaning “here is” in French) is a novel project reshaping Jupyter-based interactive dashboards by combining Voilà and JupyterLite features. It facilitates the creation of dynamic, in-browser environments for data visualization and exploration."
- date: December 6th, 2023
- authors: Trung Duc Le, Martin Renou
-
- - url: https://blog.jupyter.org/plug-your-application-into-the-jupyter-world-805e48918801
- title: Plug your application into the Jupyter world
- image: https://miro.medium.com/v2/resize:fit:1400/format:webp/1*ENzq7i52UtqxESs4UTKBYw.png
- summary: "Kernels are a simple but powerful abstraction in the Jupyter architecture. They encapsulate language interpreters and make them accessible through a standardized interface. This is the key to…"
- date: October 23rd, 2023
- authors: David Brochart
-
- - url: https://blog.jupyter.org/voil%C3%A0-0-5-0-homecoming-66f2465aa86f
- title: Voilà 0.5 - Homecoming
- image: https://miro.medium.com/v2/resize:fit:4800/format:webp/1*W1dHdjWC0CYoLjCWXXxU2w.png
- summary: Following the launch of Jupyter Notebook 7, it is now Voilà’s turn to join the JupyterLab family. In Version 0.5.0, the front-end of Voilà has been rebuilt from scratch using JupyterLab 4.0 components, just like in the case of Notebook 7.
- date: September 25th, 2023
- authors: Jeremy Tuloup, Martin Renou, Trung Duc Le
-
- - url: https://blog.jupyter.org/announcing-jupyter-notebook-7-8d6d66126dcf
- title: Announcing Jupyter Notebook 7
- image: https://miro.medium.com/v2/resize:fit:1400/format:webp/0*1RXUtbuPrEJC95ut.jpg
- summary: Jupyter Notebook 7 is the most significant release of the Jupyter Notebook in years. Some highlights of this release include real-time collaboration, interactive debugging, table of contents, theming and dark mode, internationalization, improved accessibility, compact view on mobile devices.
- date: July 26th, 2023
- authors: Jeremy Tuloup
-
- - url: https://blog.jupyter.org/jupytercon-2023-recordings-now-live-on-youtube-17564b75a2a
- title: 🎉 JupyterCon 2023 recordings now live on YouTube! 🎉
- image: https://miro.medium.com/v2/resize:fit:1400/format:webp/1*j0Cai6fnoYoJ-axQzIvpaA.png
- summary: Get ready to relive the magic of JupyterCon 2023, because the long-awaited moment is finally here! The JupyterCon YouTube channel has just dropped a treasure trove of content — all the talk and keynote recordings from the most epic conference of the year.
- date: July 22nd, 2023
- authors: Gayle Ollington, Sylvain Corlay
-
- - url: https://blog.jupyter.org/a-theme-editor-for-jupyterlab-8f08ab62894d
- title: A theme editor for JupyterLab
- image: https://miro.medium.com/v2/resize:fit:4800/format:webp/0*5OLBiA8tmTbD1Nan.png
- summary: To lower the bar for customizing JupyterLab we created a new tool providing a simple interface for tuning the JupyterLab appearance interactively.
- date: June 19th, 2023
- authors: Florence Haudin
-
- - url: https://blog.jupyter.org/collaborative-cad-in-jupyterlab-8eb9e8f81f0
- title: Collaborative CAD in JupyterLab
- image: https://miro.medium.com/v2/resize:fit:1400/format:webp/1*9r3Xz-v5wyuz8aAKY2WV-A.png
- summary: Introducing JupyterCAD, a tool that integrates Computer-Aided Design (CAD) capabilities into JupyterLab.
- date: June 2nd, 2023
- authors: Duc Trung Le, Martin Renou
-
- - url: https://blog.jupyter.org/congratulations-distinguished-contributors-7a7b215b8bd0
- title: Congratulations, Distinguished Contributors!
- image: https://miro.medium.com/v2/resize:fit:720/format:webp/1*awcttRVT1kQ1dWqJig7DWQ.jpeg
- summary: We are proud to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2022 cohort of contributors.
- date: June 2nd, 2023
- authors: Johan Mabille
-
- - url: https://blog.jupyter.org/embed-interactive-itkwidgets-3d-renderings-into-jupyterlite-deployments-10eb9ea30980
- title: Embed interactive itkwidgets 3D renderings into JupyterLite deployments
- image: https://miro.medium.com/v2/resize:fit:1100/0*_zowwA1kefuHdpEX.gif
- summary: A tutorial that demonstrates a zero-server, interactive 3D rendering notebook and walks through the quick and easy configuration that can be customized to your needs.
- date: March 15th, 2023
- authors: Matt McCormick, Brianna Major, Jeremy Tuloup, Wei Ouyang, Stephen Aylward
-
- - url: https://blog.jupyter.org/improving-the-accessibility-of-jupyter-6c695db518d3
- title: Improving the accessibility of Jupyter
- image: https://miro.medium.com/v2/resize:fit:4800/0*7imwXY7uST5QSNfi
- summary: This article presents some of the recent accessibility improvements in the Jupyter Notebook codebase.
- date: February 24th, 2023
- authors: Nicolas Brichet, Johan Mabille, Jeremy Tuloup, Frédéric Collonval, Sylvain Corlay
-
- - url: https://blog.jupyter.org/a-jupyter-kernel-for-gnu-octave-b6d29e56341f
- title: A Jupyter kernel for GNU Octave
- image: https://miro.medium.com/max/4800/0*_HZJpXD-awr4mPDG
- summary: We are happy to announce the xeus-octave project, a Jupyter kernel for GNU Octave. Xeus-octave was created by Giulio Girardi, recently joined by Antoine Prouvost - and has been incorporated into the Project Jupyter governance.
- date: January 11th, 2023
- authors: Giulio Girardi, Antoine Prouvost
-
- - url: https://medium.com/@QuantStack/quantstack-2022-in-review-7d4704b1db42
- title: "QuantStack: 2022 in review"
- image: https://miro.medium.com/max/1400/1*QnDNfCXtgb2vLbmmag9ngQ.webp
- summary: 2022 was an amazing year of innovation for the open-source developers at QuantStack. Developments range from major improvements to the Jupyter project to the packaging ecosystem and high-performance computing.
- date: December 26th, 2022
- authors: Sylvain Corlay
-
- - url: https://medium.com/@AntoineProuvost/managing-conflicts-with-mamba-6a5fa10ed6a
- title: Managing conflicts with Mamba
- image: https://miro.medium.com/max/4800/1*4FgY6y9QfGLMO3qtim-zSw.png
- summary: A key aspect of package management is finding a set of compatible versions of the required packages. Indeed, even in the case when few packages are explicitly required, second-order dependencies may…
- date: November 29th, 2022
- authors: Antoine Prouvost
-
- - url: https://blog.jupyter.org/jupytercon-is-back-in-2023-90e5c25eeec9
- title: JupyterCon is back in 2023
- image: https://miro.medium.com/max/1400/1*Mn75xGD3GWU0tpI7Rx9utQ.png
- summary: JupyterCon 2023 will be held May 10–12 (Thursday to Friday) in the city of light, Paris, France at the largest science museum in Europe, the Cité des Sciences et de l’Industrie.
- date: October 17th, 2022
- authors: Gayle Ollington
-
- - url: https://blog.jupyter.org/accelerating-jupyterlab-68942bb8d602
- title: Accelerating JupyterLab
- image: https://miro.medium.com/max/1400/1*EZX55-XLmck_LfFfV3KeaA.png
- summary: The next major release of JupyterLab will be significantly faster than previous versions. This was achieved both through systematic tracking of performance bugs and through significant upgrades to the Jupyter communication protocol and rendering mechanism for documents.
- date: September 15th, 2022
- authors: Frédéric Collonval, Johan Mabille, David Brochart, Afshin Darian
-
- - url: https://blog.jupyter.org/upgrading-nbgrader-99c56ae56c47
- title: Upgrading nbgrader
- image: https://miro.medium.com/max/922/1*C1fPJUhN8pk86GIXCQq5AA.png
- summary: Project Jupyter provides a broad collection of open-source tools for interactive computing that has become ubiquitous in data science and scientific computing, and is very popular in educational…
- date: September 15th, 2022
- authors: Nicolas Brichet
-
- - url: https://blog.jupyter.org/visual-programming-in-jupyterlab-with-blockly-7731ec3e113c
- title: Visual programming in JupyterLab with Blockly
- image: https://miro.medium.com/max/1400/0*yEQ8djozBKDLcCxZ
- summary: When moving from block-based programming to a more classical language like Python, students often have to switch to a completely new environment. In order to provide a smooth ramp of complexity for learners, we designed a JupyterLab extension for Blockly so that Jupyter can be used from the very first steps of their learning journey.
- date: July 29th, 2022
- authors: Denisa Checiu, Carlos Herrero
-
- - url: https://blog.jupyter.org/mamba-meets-jupyterlite-88ef49ac4dc8
- title: Mamba meets JupyterLite
- image: https://miro.medium.com/max/1400/1*JCiZIwwkFen5kwEA2rK4SA.png
- summary: "JupyterLite is a Jupyter distribution that runs entirely in the web browser without any server components. To achieve this, all language kernels must also run in the browser. A significant benefit of…"
- date: July 14th, 2022
- authors: Thorsten Beier, Martin Renou
-
- - url: https://blog.jupyter.org/inspector-jupyterlab-404cce3e1df6
- title: Inspector JupyterLab
- image: https://miro.medium.com/max/1215/1*pRzjLlwQIIMhJmx2G_3-Mw.png
- summary: "JupyterLab provides multiple ways to improve your coding workflow: code highlighting, code completion, theming, debugger with rich variable rendering and more."
- date: April 11th, 2022
- authors: Martin Renou
-
- - url: https://blog.pyodide.org/posts/canvas-renderer-matplotlib-in-pyodide/
- title: HTML5
based renderer for Matplotlib in Pyodide
- image: https://blog.pyodide.org/posts/canvas-renderer-matplotlib-in-pyodide/featured.png
- summary: In this post, we present a new backend for Matplotlib enabling the rendering of figures in the browser by leveraging the <canvas> element. This showcases how JavaScript and Python can interact with each other, thanks to Pyodide.
- date: April 1st, 2022
- authors: Madhur Tandon
-
- - url: https://wolfv.medium.com/the-future-of-mamba-fdf6d628b3df
- title: The future of mamba
- image: https://miro.medium.com/max/1400/1*uF6b_NEqPQqQafnOnrdVXg.png
- summary: The recent adoption of libmamba by the conda project was a great validation of our work. Several other game-changing innovations are in the works by the mamba team. Stay tuned!
- date: March 31st, 2022
- authors: Wolf Vollprecht
-
- - url: https://blog.jupyter.org/congratulations-distinguished-contributors-bc349fa60d68
- title: Congratulations, Distinguished Contributors!
- image: https://miro.medium.com/max/1400/1*Cw8VcAfJKv42NLtAN6v-rw.png
- summary: We are proud to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2021 cohort of contributors.
- date: March 16th, 2022
- authors: Johan Mabille
-
- - url: https://blog.jupyter.org/jupyter-everywhere-f8151c2cc6e8
- title: "Jupyter Everywhere"
- image: https://miro.medium.com/max/1342/0*TK59W6sOJHNg-Sgi.jpg
- summary: Easily embed a console, a notebook, or a fully-fledged IDE on any web page.
- date: March 15th, 2022
- authors: Martin Renou, Jeremy Tuloup
-
- - url: https://medium.com/@kmathewos92/ros2-support-for-zethus-e6ecfcdb1c4c
- title: "ROS2 support for Zethus"
- image: https://miro.medium.com/max/1400/1*PjL5c71-hE2rO4EyqrVu9Q.png
- summary: Zethus is an Open Source library for Robot visualization in the browser. Initially developed by Rapyuta Robotics, it provides a web-based…
- date: February 17th, 2022
- authors: Kedus Mathewos
-
- - url: https://medium.com/@QuantStack/quantstack-2021-in-review-fe5eac2e0f6d
- title: "QuantStack: 2021 in review"
- image: https://miro.medium.com/max/5000/1*sTrv_3hnvCHQdh_6SOYVIg.png
- summary: This was a crazy year of innovation for the open-source team at QuantStack. From JupyterLab to the packaging ecosystem and high-performance computing, we made some major strides in all areas, while almost doubling the size of the team.
- date: December 18th, 2021
- authors: Sylvain Corlay
-
- - url: https://blog.jupyter.org/jupyter-games-cda20dc15a21
- title: Jupyter Games
- image: https://miro.medium.com/max/4854/1*gXbeqCDvKyaRySdAX6SnKg.png
- summary: Making their own tiny video games can be a great way for kids to learn programming in a playful matter. While Jupyter is widely used as a scientific and educational tool, Jupyter is seldom used as a…
- date: December 14th, 2021
- authors: Thorsten Beier
-
- - url: https://blog.jupyter.org/need-for-speed-voil%C3%A0-edition-a9e1300ab3b2
- title: "Need for speed: Voilà edition"
- image: https://miro.medium.com/max/2000/1*gSWxQGu60SG5DdH8MIzCjw.png
- summary: Voilà turns Jupyter notebooks into standalone applications without requiring any modification to the content. You want to share your content with non-technical readers? Just call Voilà with the…
- date: December 10th, 2021
- authors: Duc Trung Le
-
- - url: https://adelsalle.medium.com/towards-a-more-secure-conda-ecosystem-5ce65a27d7d5
- title: Towards a more secure conda ecosystem
- image: https://miro.medium.com/max/2000/1*-dT0h3rEi07pzgl_wnkj_g.png
- summary: Supply chain security is crucial to the overall security of package managers, which are a major attack vector of information systems. Today, we are pleased to announce that mamba has gained the…
- date: November 16th, 2021
- authors: Adrien Delsalle
-
- - url: https://johan-mabille.medium.com/toward-a-faster-and-thinner-xsimd-9e4eef41bc17
- title: Toward a faster and thinner xsimd
- image: https://miro.medium.com/max/1094/1*5jX4Eemb2CsUkRo3V2FGow.png
- summary: xsimd, the SIMD library by QuantStack, got more and more adoption in recent years. While it helped improve the library, adoption also brought new requirements. Among them was the abitility to...
- date: October 29th, 2021
- authors: Serge Guelton, Johan Mabille
-
- - url: https://blog.jupyter.org/xeus-lite-379e96bb199d
- title: Xeus-Lite
- image: https://miro.medium.com/max/4020/1*PUlJi6czJovO90t-Dsgt5g.png
- summary: JupyterLite is a JupyterLab distribution that runs entirely in the web browser, backed by in-browser language kernels. Xeus is C++ library for writing Jupyter kernels. In this blogpost we show how…
- date: October 25th, 2021
- authors: Thorsten Beier
-
- - url: https://wolfv.medium.com/the-mamba-project-and-the-czi-grant-ec88fb27c25
- title: The mamba project and the CZI grant
- image: https://miro.medium.com/max/2000/1*6hKli3Nr3p6eX3TN5hRaSQ.png
- summary: "For those who don't know yet: mamba is a fast, cross-platform & non-language-specific package manager widely used in the scientific space. Mamba works with conda -packages and works great in tandem…"
- date: October 19th, 2021
- authors: Wolf Vollprecht
-
- - url: https://blog.jupyter.org/looking-at-notebooks-from-a-new-perspective-bfd06797f188
- title: Looking at notebooks from a new perspective
- image: https://miro.medium.com/max/3000/1*g3OWLubcUFgVIGBfPYztJQ.png
- summary: Jupyter notebooks are a great tool for practitioners of scientific computing from the research phase of their work to the communication of their results. The interleaving of code and rich text makes…
- date: October 5th, 2021
- authors: Mariana Meireles
-
- - url: https://blog.jupyter.org/xeus-2-0-cb460d4daed4
- title: Xeus 2.0
- image: https://miro.medium.com/max/4800/1*kGCA9WV-Gf5tiNqqy9vTMQ.png
- summary: We have just released Xeus 2.0. This is a major release of the library. While it includes backward-incompatible changes, they are very limited and upgrading your kernels should be relatively easy…
- date: September 28th, 2021
- authors: Johan Mabille, Sylvain Corlay
-
- - url: https://blog.jupyter.org/from-jupyter-to-the-moon-2e432df402c8
- title: From Jupyter to the Moon
- image: https://miro.medium.com/max/2750/1*Or2bu8twFwywgACqLOE9AA.png
- summary: A key principle in Jupyter’s design is language agnosticism, and one of the main extension points of the Jupyter ecosystem is the kernel, the part of the architecture responsible for executing the…
- date: September 24th, 2021
- authors: Thorsten Beier
-
- - url: https://blog.jupyter.org/jupyterlite-jupyter-%EF%B8%8F-webassembly-%EF%B8%8F-python-f6e2e41ab3fa
- title: Jupyter ❤️ WebAssembly ❤️ Python
- image: https://miro.medium.com/max/1024/1*CMvcTaLSAD5A-WHCtnIFwA.png
- summary: JupyterLite is a JupyterLab distribution that runs entirely in the web browser, backed by in-browser language kernels. JupyterLite is a reboot of several attempts at making a full static Jupyter…
- date: July 13th, 2021
- authors: Jeremy Tuloup
-
- - url: https://wolfv.medium.com/mamba-0-15-0-475d1dca0418
- title: Mamba 0.15.0
- image: https://miro.medium.com/max/2000/1*neAjO4lTmq4TIZTmMGkKNg.png
- summary: We’ve just dropped one of the biggest releases of mamba (the fast conda package manager)— along with some nice improvements in libsolv! This is a quick update on some new and improved features in…
- date: July 9th, 2021
- authors: Wolf Vollprecht, Adrien Delsalle
-
- - url: https://www.polytechnique.edu/fondation/content/le-calcul-haute-performance-au-service-de-l%E2%80%99innovation
- title: Le calcul haute performance au service de l'innovation (in French)
- image: https://xpuissancevous.fr/assets/frontend/images/header/logo_share.png
- summary: Led by Professor Marc Massot (Center for Applied Mathematics), the HPC@Maths initiative aims at developing a strong expertise in high-performance computing at École Polytechnique. This project is supported by the X Foundation, and by QuantStack.
- date: June 18th, 2021
- authors: Fondation École Polytechnique
-
- - url: https://blog.jupyter.org/how-we-made-jupyter-notebooks-collaborative-with-yjs-b8dff6a9d8af
- title: How we made Jupyter notebooks collaborative with Yjs
- image: https://miro.medium.com/max/1600/0*HvwrxmA_sBtU0SaO
- summary: Collaborative editing — à la Google Docs — is a feature that you still rarely find in applications. One of the few good things that came out of this pandemic is that more people seem to care about…
- date: June 12th, 2021
- authors: Kevin Jahns
-
- - url: https://blog.jupyter.org/retrolab-a-jupyterlab-distribution-with-a-retro-look-and-feel-8096b8b223d0
- title: RetroLab - A JupyterLab distribution with a retro look and feel
- image: https://miro.medium.com/max/3840/1*n9MydI9CDW9vlav1gMlo0Q.png
- summary: RetroLab is an alternative JupyterLab distribution, built from the ground-up, providing a notebook interface with a retro look and feel. Currently at version 3.0, JupyterLab provides an advanced…
- date: May 27th, 2021
- authors: Jeremy Tuloup
-
- - url: https://adelsalle.medium.com/rhumba-the-fast-r-distribution-is-available-on-windows-fa975b2aefa2
- title: Rhumba, the fast R distribution is available on Windows
- image: https://miro.medium.com/max/700/1*23wOYejHZA5dLluhyLUYhA.gif
- summary: A few months ago, Mariana Meireles created Rhumba, a fast R package manager and distribution leveraging the conda-forge initiative and the mamba library. Today, we’re happy to announce a new major…
- date: May 18th, 2021
- authors: Adrien Delsalle
-
- - url: https://blog.jupyter.org/enabling-the-jupyterlab-debugger-with-ipykernel-8d7248f522b0
- title: Enabling the JupyterLab Debugger with ipykernel
- image: https://miro.medium.com/max/4214/1*jSQWLvCYoV-L-kp_lTkRKg.gif
- summary: JupyterLab 3.0 includes a visual debugger that allows to interactively set breakpoints, step into functions, and inspect variables with any Jupyter kernel that implements the Jupyter debugger…
- date: May 13th, 2021
- authors: Sylvain Corlay, Johan Mabille
-
- - url: https://medium.com/@mari_meir/jupyter-%EF%B8%8F-%EF%B8%8F-cytoscape-e2e77be8e0f9
- title: Jupyter ❤️ Cytoscape
- image: https://miro.medium.com/max/250/1*fib_QqwBNksN4YiJiAneQg.png
- summary: Cytoscape is an open source software platform for visualizing complex networks and integrating these with any type of attribute data. While the project was started in the life sciences community, it…
- date: May 11th, 2021
- authors: Mariana Meireles
-
- - url: https://johan-mabille.medium.com/zarray-a-dynamic-expression-system-based-on-xtensor-ded69f37ff5e
- title: "zarray: a dynamic expression system based on xtensor"
- image: https://miro.medium.com/max/782/0*MH-GD9T19Fjn32ur.png
- summary: In this article we demonstrate how we pushed xtensor one step further, implementing a dynamic expression system on top of it. xtensor is a comprehensive C++framework for multi-dimensional array…
- date: Apr 29th, 2021
- authors: Johan Mabille
-
- - url: https://blog.jupyter.org/nbterm-jupyter-notebooks-in-the-terminal-6a2b55d08b70
- title: "nbterm: Jupyter Notebooks in the terminal"
- image: https://miro.medium.com/max/1120/1*jZFC3kPJqxMSUeCGd7PHxw.jpeg
- summary: Jupyter notebooks are mostly known for their web-based user interface, such as JupyterLab or the Classic Notebook. They offer a great user experience, allow for rich output rendering, provide…
- date: Apr 26th, 2021
- authors: David Brochart
-
- - url: https://blog.jupyter.org/abracadabra-bringing-the-magics-to-xeus-python-9d17bcfacb4
- title: Abracadabra! Bringing the Magics to Xeus-Python
- image: https://miro.medium.com/max/1120/1*PTiGVyDsazc_ziz6Bk4EnA.gif
- summary: Last year, we set ourselves to implement a visual debugger for JupyterLab. This endeavor required major developments in the JupyterLab…
- date: Feb 18th, 2021
- authors: Martin Renou
-
- - url: https://medium.com/robostack/cross-platform-conda-packages-for-ros-fa1974fd1de3
- title: Cross-platform Conda Packages for ROS
- image: https://miro.medium.com/max/2000/0*CWMpP2kGWulIQeHf.jpg
- summary: 2020 has been a busy year for the RoboStack project. We collaboratively published ros-noetic on four platforms (Windows, macOS, Linux x64 and ARM64) and revamped how ROS packages can be released on…
- date: February 16th, 2021
- authors: Wolf Vollprecht, Tobias Fischer
-
- - url: https://blog.jupyter.org/genomic-data-representation-in-jupyter-c57a5bb518d6
- title: Genomic Data representation in Jupyter
- image: https://miro.medium.com/max/1120/1*681fIddZAaQc8w72MmmIiw.gif
- summary: If there is one thing that recent events tell us, it is that genomics is a large source of data, and that its manipulation and understanding allow for the quick development of new drugs and…
- date: February 8th, 2021
- authors: Jean-David Harrouet
-
- - url: https://blog.jupyter.org/an-sql-solution-for-jupyter-ef4a00a0d925?postPublishedType=initial
- title: An SQL Solution for Jupyter
- image: https://miro.medium.com/max/992/1*tbfa_AWoqb-yB1Tk6Uq3ng.png
- summary: A few months ago we released xeus-sqlite, a Jupyter kernel that allows users to make SQLite queries directly from the notebook. With the needs of the Jupyter data science community in mind we decided…
- date: February 3rd, 2021
- authors: Mariana Meireles
-
-
- - url: https://blog.jupyter.org/a-curiously-recurring-widget-library-261a65bd56fe
- title: A Curiously Recurring Widget Library
- image: https://miro.medium.com/max/1120/1*i1D4_PqaKhej-XRSKkoyBw.png
- summary: Diving into the implementation of xwidgets…
- date: January 27th, 2021
- authors: Sylvain Corlay
-
- - url: https://blog.jupyter.org/robotic-process-automation-with-jupyterlab-713b5630e457
- title: Robotic Process Automation with JupyterLab
- image: https://miro.medium.com/max/1120/1*3HNfLnwDpXNZ6n6HPD2lXQ.png
- summary: Robotic Process Automation (RPA) differs from classical automation tools in that the actions to automate can be developed by observing a user perform a task in a graphical user interface, across…
- date: January 18th, 2021
- authors: Martin Renou, Johan Mabille
-
- - url: https://blog.jupyter.org/dashboarding-with-jupyterlab-3-789fcb1a5857
- title: Dashboarding with JupyterLab 3.0
- image: https://miro.medium.com/max/2000/1*t4EW3oCIrt5FaMXUyjYPFw.gif
- summary: Project Jupyter offers a complete suite of open-source tools for the scientific computing community, reaching from the exploratory phase of a project to the presentation of the results. In this last…
- date: January 8th, 2021
- authors: Carlos Herrero, Jeremy Tuloup
-
- - url: https://blog.jupyter.org/jupyterlab-3-0-is-out-4f58385e25bb
- title: JupyterLab 3.0 is Released!
- image: https://miro.medium.com/max/1400/1*iZTmCAefbExeTZNJKWy4cQ.png
- summary: The 3.0 release of JupyterLab brings many new features to users and substantial improvements to the extension distribution system.
- date: January 5th, 2021
- authors: Jeremy Tuloup
-
- - url: https://blog.llvm.org/posts/2020-12-21-interactive-cpp-for-data-science/
- title: Interactive C++ for Data Science
- image: https://blog.llvm.org/img/cling-2020-12-21-figure3.png
- summary: This post will discuss some applications of Cling developed to support data science researchers. In particular, interactively probing data and interfaces makes complex libraries and complex data more accessible users.
- date: Dec 23, 2020
- authors: Vassil Vassilev, David Lange, Simeon Ehrig, Sylvain Corlay
-
- - url: https://david-brochart.medium.com/xtensor-%EF%B8%8F-zarr-4f5cf25c65e5
- title: Xtensor ❤️ Zarr
- image: https://miro.medium.com/max/2160/1*N1w2lJOA9n0HKw0Hlf0ruQ.png
- summary: A C++ implementation of the Zarr specification…
- date: Dec 15, 2020
- authors: David Brochart
-
- - url: https://blog.jupyter.org/a-c-backend-for-vega-lite-bd2524b247c2
- title: A C++ API for Vega-Lite
- image: https://miro.medium.com/max/700/1*UkIPGquufhYT7-S62MTECg.png
- summary: In this post, we present the first public release of XVega, a C++ library for producing Vega-Lite charts. Data science workflows differ from traditional software development in that engineers make…
- date: Dec 2, 2020
- authors: Madhur Tandon
-
- - url: https://blog.jupyter.org/ipygany-jupyter-into-the-third-dimension-29a97597fc33
- title: Ipygany, Jupyter into the Third Dimension
- image: https://miro.medium.com/max/1000/1*IB4Bf4aEC5RXJJ1gY1zGFw.png
- summary: From Paraview to Mayavi, there are multiple solutions for data analysis on 3D meshes on the desktop. Most of these tools provide high-level APIs that can be driven with a scripting language like…
- date: Oct 14, 2020
- authors: Martin Renou
-
- - url: https://medium.com/@mari_meir/rhumba-a-faster-r-distribution-d619fb93043a
- title: Rhumba, a Faster R Distribution
- image: https://miro.medium.com/max/1260/1*qNdIl4oTgd0F6JAExK7CNg.gif
- summary: CRAN is the official package manager for the R ecosystem. Unfortunately, simple operations such as creating new environments or installing packages with it can be very time-consuming due to the fact…
- date: Oct 13, 2020
- authors: Mariana Meireles
-
- - url: https://blog.jupyter.org/the-templating-system-of-nbconvert-6-47ea781eacd2
- title: The Templating System of Nbconvert 6
- image: https://miro.medium.com/max/1200/1*nrUKm5eexRd9ReMergNnEw.png
- summary: One of the main changes in nbconvert 6 is the refactor of the template system, which should be easier to extend and build upon. In this article, we dive into the template system, and provide a…
- date: Sep 26, 2020
- authors: Sylvain Corlay
-
- - url: https://medium.com/@mari_meir/memestra-a21c0c1f362
- title: Memestra!
- image: https://miro.medium.com/max/1200/1*usMYAuVljfxl9LnSPnseVg.png
- summary: Modern IDE features such as interactive debugging, linting, code formatting, and refactoring tools are now available in JupyterLab, thanks to the JupyterLab-LSP extension and the recent release of…
- date: Sep 21, 2020
- authors: Mariana Meireles
-
- - url: https://medium.com/@martinRenou/real-time-rendering-of-water-caustics-59cda1d74aa
- title: Real-time Rendering of Water Caustics
- image: https://miro.medium.com/max/875/1*lbqTcvsdT_5D2LT1h5bO2g.png
- summary: In this article, I present an attempt for generalizing caustics computation in real-time using WebGL and ThreeJS. The fact that it is an attempt is important, finding a solution that works well in…
- date: Aug 27, 2020
- authors: Martin Renou
-
- - url: https://blog.jupyter.org/jupyterlab-ros-3dc9dab7f421
- title: JupyterLab, the Cloud Robotics Command Station
- image: https://miro.medium.com/max/3200/1*zfaBPxiCzlnoNoKrVpcrIA.png
- summary: Building the next generation of robotics cloud computing using ROS and JupyterLab
- date: Aug 11, 2020
- authors: Carlos Herrero, Wolf Vollprecht
-
- - url: https://blog.jupyter.org/slicerjupyter-a-3d-slicer-kernel-for-interactive-publications-6f2ad829f635
- title: SlicerJupyter, a 3-D Slicer Kernel for Interactive Publications
- image: https://miro.medium.com/max/341/1*ePhHKkjqV-AW0mvDkaeurw.png
- summary: Use Jupyter and 3D Slicer kernel to implement biomedical data processing workflows in a notebook.
- date: Jul 8, 2020
- authors: Sylvain Corlay, Jean-Christophe Fillion-Robin, Mike Grauer, Andras Lasso, Matt MacCormick, Isaiah Norton, Steve Pieper, Martin Renou, Mike Sarahan
-
- - url: https://medium.com/@QuantStack/open-software-packaging-for-science-61cecee7fc23
- title: Open Software Packaging for Science
- image: https://raw.githubusercontent.com/TheSnakePit/design/83d7450620172e41f54e65c76f1374b52dfab8a1/mamba.svg
- summary: Modern scientific applications typically depend on a very large number of libraries written in various programming languages, ranging from Fortran to TypeScript, C, C++, Python, etc. So, we need to…
- date: Jun 19, 2020
- authors: Wolf Vollprecht, Mario Buikhuizen, Marianne Corvellec, Johan Mabille, David Brochart
-
- - url: https://blog.jupyter.org/a-jupyter-kernel-for-sqlite-9549c5dcf551
- title: A Jupyter Kernel for SQLite
- image: https://miro.medium.com/max/604/1*pzPTGCJVgIO10N7OwOGWKw.png
- summary: While it is well known in the Python scientific computing community, Jupyter is in fact a language-agnostic development environment. High-quality language kernels exist for the main languages of data…
- date: Jun 11, 2020
- authors: Mariana Meireles
-
- - url: https://blog.jupyter.org/plasma-a-learning-platform-powered-by-jupyter-1b850fcd8624
- title: PLASMA, a Learning Platform Powered by Jupyter
- image: https://miro.medium.com/max/933/0*wWdglu7KBVC08Lcc.png
- summary: Jupyter has been a great choice for education for many years. The Jupyter Notebook has become one of the most popular tools to conduct workshops, tutorials, and teach online classes. Recently we have…
- date: May 11, 2020
- authors: Jeremy Tuloup
-
- - url: https://blog.jupyter.org/interactive-graph-visualization-in-jupyter-with-ipycytoscape-a8828a54ab63
- title: Interactive Graph Visualization in Jupyter with IPycytoscape
- image: https://miro.medium.com/max/933/1*d9UZBB4OB3LXVm7fTHBHaw.png
- summary: The Jupyter widgets ecosystem offers a broad variety of data visualization tools for exploratory analysis in the notebook. However, we…
- date: Apr 30, 2020
- authors: Mariana Meireles
-
- - url: https://blog.jupyter.org/a-visual-debugger-for-jupyter-914e61716559
- title: A Visual Debugger for Jupyter
- image: https://miro.medium.com/max/933/0*9pVDg58cTz5Yezw8.gif
- summary: Most of the progress made in software projects comes from incrementalism. The ability to quickly see the outcome of an execution and iterate has been one of the main reasons for the success of…
- date: Mar 25, 2020
- authors: Jeremy Tuloup, Borys Palka, Johan Mabille, Martin Renou, Afshin Darian, Sylvain Corlay
-
- - url: https://blog.jupyter.org/report-on-the-jupyter-community-workshop-on-dashboarding-14f8ad9f3c0
- title: Field Report on the Jupyter Community Workshop on Dashboarding
- image: https://miro.medium.com/max/933/1*e8gJ4j2hCn4XMPagp6etOA.jpeg
- summary: From June 3rd to June 6th 2019, thirty-five developers from the Jupyter community met in Paris for a four-day workshop on dashboarding with Project Jupyter. For four days, attendees worked full time…
- date: Feb 14, 2020
- authors: Sylvain Corlay
-
- - url: https://medium.com/@wolfv/introducing-scikit-geometry-ae1dccaad5fd
- title: Introducing Scikit-Geometry
- image: https://miro.medium.com/max/1260/1*Ns12n2k0T3m0Hoe-5gg4kQ.png
- summary: As a robotics researcher (but also in many other fields) computations on geometric primitives are used very frequently— but it’s harder than anticipated to find the right abstractions in a nice…
- date: Jan 24, 2020
- authors: Wolf Vollprecht
-
- - url: https://medium.com/@johan.mabille/how-we-wrote-xtensor-8-n-iterators-7df77e3223f7
- title: How we Wrote Xtensor (Episode 8) - Iterators
- image: https://miro.medium.com/max/1260/0*mdtjNgTehPo6xzRO.png
- summary: In the previous article, we implemented the broadcasting rules so that we can compute the shape of arbitrary complex trees that involve arrays with different but compatible shapes. This is the first…
- date: Jan 7, 2020
- authors: Johan Mabille
-
- - url: https://medium.com/@wolfv/2019-in-review-d7d03fb0d17d
- title: 2019 in Review
- image: https://miro.medium.com/max/3600/1*64DQjEYUaRMtHA2Ou3It8w.png
- summary: This year has seen major changes in xeus and xeus-python, driven by the requirements for developing a visual debugger. We have implemented a prototype that supports the Debug Adapter Protocol from…
- date: Jan 2, 2020
- authors: Wolf Vollprecht
-
- - url: https://medium.com/@wolfv/robot-development-with-jupyter-ddae16d4e688
- title: Robot Development with Jupyter
- image: https://miro.medium.com/max/1260/1*rqyB9qBQUlonff3PR9YuvA.png
- summary: Jupyter and Voilà are two popular packages in the data science ecosystem. But the Jupyter plugins jupyter-ros and jupyter-amphion make them more interesting than ever for robotics applications. This…
- date: Dec 31, 2019
- authors: Wolf Vollprecht
-
- - url: https://medium.com/@johan.mabille/how-we-wrote-xtensor-7-n-broadcasting-cf37a974d029
- title: How we Wrote Xtensor (Episode 7) - Broadcasting
- image: https://miro.medium.com/max/1260/0*mdtjNgTehPo6xzRO.png
- summary: In the previous article, we implemented operator and mathematical function overloads so that we can build arbitrary complex expression trees and access their elements. Before we can assign an…
- date: Nov 24, 2019
- authors: Johan Mabille
-
- - url: https://blog.jupyter.org/voila-gridstack-template-8a431c2b353e
- title: Configure your Dashboards with the Voilà Gridstack Template
- image: https://miro.medium.com/max/933/1*Pl6z5oPeFixFjxMEYzEpIA.gif
- summary: Voilà is a new dashboarding solution from Jupyter ecosystem. It provides an easy-to-use tool to convert your Jupyter notebooks into standalone web applications. If you have not used it before, you…
- date: Nov 11, 2019
- authors: Bartosz Telenczuk
-
- - url: https://blog.jupyter.org/a-slideshow-template-for-voil%C3%A0-apps-435f67d10b4f
- title: A Slideshow template for Voilà
- image: https://miro.medium.com/max/512/1*JLepfTuigc_h1Gfy768BWg.png
- summary: Last June, QuantStack announced the first release of Voilà, a solution to turn Jupyter notebooks into standalone web applications. Voilà enforces security (preventing arbitrary code execution) while…
- date: Oct 29, 2019
- authors: Marianne Corvellec
-
- - url: https://medium.com/@wolfv/ros-on-conda-forge-dca6827ac4b6
- title: ROS on Conda-forge
- image: https://miro.medium.com/max/1260/1*Vs520qK74Y0O3O5BtlgB7g.png
- summary: ROS is a fantastic and very large suite of software tools for Robotics. It’s used in many applications and with great success, ranging from the hobbyist market to industrial use cases. Most people…
- date: Oct 28, 2019
- authors: Wolf Vollprecht
-
- - url: https://blog.jupyter.org/ipycanvas-a-python-canvas-for-jupyter-bbb51e4777f7
- title: IPycanvas, a Python Canvas for Jupyter
- image: https://miro.medium.com/max/933/1*LHrtcPJMCWVMgsvNR6tR6w.png
- summary: As you may already know, the Jupyter Notebook and JupyterLab are Browser-based applications. Browsers are incredibly powerful, they allow you to swap rich and interactive graphical interfaces…
- date: Oct 25, 2019
- authors: Martin Renou
-
- - url: https://blog.jupyter.org/field-report-on-the-kernel-community-workshop-a4ad73a1a718
- title: Field Report on the Kernel Community Workshop
- image: https://miro.medium.com/max/933/1*AKYqXS6qtE0k6EcTKl3BEQ.jpeg
- summary: From May 27th to May 29th, thirty developers from the Jupyter community met in Paris for a three-days workshop on the Jupyter kernel…
- date: Oct 7, 2019
- authors: Sylvain Corlay
-
- - url: https://medium.com/@johan.mabille/how-we-wrote-xtensor-6-n-operator-overloading-984c2e5b4171
- title: How we Wrote Xtensor (Episode 6) - Operator Overloading
- image: https://miro.medium.com/max/1260/0*lB4lCWmmeVGAfBUq.png
- summary: In the previous article, we introduced expression templates and developed the skeleton of the xfunction class, meant to represent a node of the abstract syntax tree of a tensor expression. We left…
- date: Sep 25, 2019
- authors: Johan Mabille
-
- - url: https://blog.jupyter.org/interactive-gis-in-jupyter-with-ipyleaflet-52f9657fa7a
- title: Interactive GIS in Jupyter with IPyleaflet
- image: https://miro.medium.com/max/667/1*YA26aVkLDM1KXjNtGu5-Hw.gif
- summary: As Jupyter grew in popularity, a broad ecosystem of visualization packages based on Jupyter widgets has been developed, bringing even more interactivity to the Jupyter world. In this article, we dive…
- date: Sep 25, 2019
- authors: Sylvain Corlay, Martin Renou
-
- - url: https://medium.com/@johan.mabille/how-we-wrote-xtensor-5-n-expression-templates-d07332e73d1d
- title: How we Wrote Xtensor (Episode 5) - Expression Templates
- image: https://miro.medium.com/max/506/1*s4m7A7i78pzy-swZZwHkAA.png
- summary: In the previous articles, we started to implement an N-D container, xarray, which has value semantics and provides all the methods required to access its data. The next step is to give it computation…
- date: Sep 5, 2019
- authors: Johan Mabille
-
- - url: https://blog.jupyter.org/building-a-calculator-jupyter-kernel-4aed5764a295
- title: Building a Calculator Jupyter Kernel
- image: https://miro.medium.com/max/933/0*h6rfGRuTgOkwonN9
- summary: In order to provide a language-agnostic scientific development environment, the Jupyter project is built upon a well-specified protocol to communicate with the Kernel, the part of the infrastructure…
- date: Jul 16, 2019
- authors: Vasavan Thiru, Thibault Lacharme
-
- - url: https://medium.com/@johan.mabille/how-we-wrote-xtensor-4-n-value-semantics-6baa6856d313
- title: How we Wrote Xtensor (Episode 4) - Value Semantics
- image: https://miro.medium.com/proxy/1*HsU43Jzp1vJZpX2g8XPJsg.png
- summary: xtensor is a comprehensive framework for N-D arrays processing, including an extensible expression system, lazy evaluation, and many other…
- date: Jul 16, 2019
- authors: Johan Mabille
-
- - url: https://blog.jupyter.org/introducing-templates-for-jupyter-widget-layouts-f72bcb35a662
- title: Introducing Templates for Jupyter Widget Layouts
- image: https://miro.medium.com/max/933/1*YQrJiSx2g6GfhkIqK24RUw.png
- summary: Notebooks come alive with Jupyter widgets, which allow users to produce interactive GUIs inline in the Jupyter notebook or JupyterLab. You can either use them to add a few interactive controls and…
- date: Jul 4, 2019
- authors: Bartosz Telenczuk
-
- - url: https://medium.com/@johan.mabille/how-we-wrote-xtensor-3-n-the-constructors-65a177260638
- title: How we Wrote Xtensor (Episode 3) - The Constructors
- image: https://miro.medium.com/proxy/1*HsU43Jzp1vJZpX2g8XPJsg.png
- summary: In the previous article, we detailed the implementation of a generic access operator for our N-D container. Two more things to implement before the xarray class can be used in practice are…
- date: Jun 24, 2019
- authors: Johan Mabille
-
- - url: https://medium.com/@johan.mabille/how-we-wrote-xtensor-2-n-access-operators-57e8e3852263
- title: How we Wrote Xtensor (Episode 2) - Access Operators
- image: https://miro.medium.com/proxy/1*HsU43Jzp1vJZpX2g8XPJsg.png
- summary: In the previous article, we started to design an N-dimensional container. We detailed the implementation of methods related to shape, strides, and memory layout. Let us now get to the access…
- date: Jun 20, 2019
- authors: Johan Mabille
-
- - url: https://medium.com/@johan.mabille/how-we-wrote-xtensor-1-n-n-dimensional-containers-f79f9f4966a7
- title: How we Wrote Xtensor (Episode 1) - N-Dimensional Containers
- image: https://miro.medium.com/max/900/1*HsU43Jzp1vJZpX2g8XPJsg.png
- summary: xtensor is a C++ library meant for numerical analysis with multi-dimensional array expressions. It exposes an API similar to that of NumPy…
- date: Jun 17, 2019
- authors: Johan Mabille
-
- - url: https://blog.jupyter.org/and-voil%C3%A0-f6a2c08a4a93
- title: And Voilà!
- image: https://miro.medium.com/max/933/1*F0IS2B1XS6NCxp0Eh7linQ.png
- summary: The goal of Project Jupyter is to improve the workflows of researchers, educators, scientists, and other practitioners of scientific computing, from the exploratory phase of their work to the…
- date: Jun 11, 2019
- authors: Sylvain Corlay, Maarten Breddels
-
- - url: https://medium.com/@wolfv/mamba-development-news-29e32aaa8d6c
- title: Mamba Development News
- image: https://miro.medium.com/max/1800/1*g1iLyOfddtgWnkq3irRVmA.png
- summary: "Mamba is a drop-in replacement for conda, the awesome cross-platform package manager. In our opinion, conda has one tiny problem: it’s too slow when many packages are installed, or when installing…"
- date: Jun 10, 2019
- authors: Wolf Vollprecht
-
- - url: https://medium.com/@wolfv/building-an-open-source-continuous-benchmark-system-717839093962
- title: Building an Open-Source Continuous Benchmark System
- image: https://miro.medium.com/max/3686/1*Oopw8DH88w_5ryddn-TIcw.png
- summary: "Concourse is a continuous integration software, and we use it for two purposes: multi-project continuous integration, and continuous benchmarking. It’s easy to setup on a low cost server, using…"
- date: May 29, 2019
- authors: Wolf Vollprecht
-
- - url: https://blog.jupyter.org/ros-jupyter-b7e82b5e1202
- title: ROS @ Jupyter
- image: https://miro.medium.com/max/933/1*35w3erSL2xz0mp9le6YNyg.png
- summary: Historically, the ROS (Robot Operating System) community has relied on Qt for building complex user interfaces. Nowadays, the Jupyter notebook and the ipywidgets framework offer a compelling…
- date: Apr 7, 2019
- authors: Wolf Vollprecht
-
- - url: https://medium.com/@wolfv/making-conda-fast-again-4da4debfb3b7
- title: Making Conda Fast Again
- image: https://miro.medium.com/max/1260/1*5gXPul2JQUjm6oe8Gt6WgQ.png
- summary: "You might have seen the announcement on Twitter: at QuantStack we’ve been working on making a prototype of a conda-compatible package manager called mamba. Conda is a great tool to distribute data…"
- date: Mar 28, 2019
- authors: Wolf Vollprecht
-
- - url: https://towardsdatascience.com/interactive-spreadsheets-in-jupyter-32ab6ec0f4ff
- title: Interactive spreadsheets in Jupyter
- image: https://miro.medium.com/max/3322/1*sKQkf8JV8xTIq9pxVBHGow.png
- summary: ipysheet is a new interactive widgets library that aims at implementing the core features of a good spreadsheet application and more…
- date: Mar 8, 2019
- authors: Martin Renou
-
- - url: https://blog.jupyter.org/a-new-python-kernel-for-jupyter-fcdf211e30a8
- title: A New Python Kernel for Jupyter
- image: https://miro.medium.com/max/604/1*YIXmS4xfX9MxQ6dHZLU8-g.png
- summary: Project Jupyter aims at providing a consistent set of tools for interactive computing workflows across multiple programming languages. Jupyter projects are popular at all stages of a research project…
- date: Jan 9, 2019
- authors: Martin Renou
-
- - url: https://medium.com/@johan.mabille/xframe-towards-a-c-dataframe-26e1ccde211b
- title: "Xframe: Towards a C++ Dataframe"
- image: https://miro.medium.com/max/1260/1*oIyi7fqvyjIwEw49XkMFig.png
- summary: For a very long time, the C++ programming language lacked a high-level toolset for scientific computing. Data structures such as N-dimensional arrays, data frames, are the bread and butter of the R…
- date: Jan 4, 2019
- authors: Johan Mabille
-
- - url: https://medium.com/@johan.mabille/designing-language-bindings-with-xtensor-f32aa0f20db
- title: Designing Language Bindings with Xtensor
- image: https://raw.githubusercontent.com/xtensor-stack/xtensor/master/docs/source/xtensor.svg
- summary: xtensor and its satellite projects make it easy to implement a feature once in C++ and expose it to the main languages of data science, such as Python, Julia and R with little extra work. Although…
- date: Nov 30, 2018
- authors: Johan Mabille
-
- - url: https://towardsdatascience.com/video-streaming-in-the-jupyter-notebook-635bc5809e85
- title: Video Streaming in the Jupyter Notebook
- image: https://miro.medium.com/max/1400/1*HTd5uPpq8hsVhxv0MeVfAg.gif
- summary: ipywidgets plays an essential part in the Jupyter ecosystem; it brings interactivity between user and data. Widgets are eventful Python objects that often have a visual representation in the Jupyter…
- date: Nov 19, 2018
- authors: Martin Renou
-
- - url: https://towardsdatascience.com/the-xtensor-vision-552dd978e9ad
- title: The Xtensor Vision
- image: https://miro.medium.com/max/3200/0*VgDZuseWa2S05e6A
- summary: Here we’re laying out a vision for the xtensor project, the n-dimensional array in the C++ language — that makes it easy to write high-performance code and bind it to the languages of data science…
- date: Nov 10, 2018
- authors: Wolf Vollprecht
-
- - url: https://serge-sans-paille.github.io/pythran-stories/bye-bye-boostsimd-welcome-xsimd.html
- title: Bye bye Boost.SIMD, Welcome XSimd
- image: https://raw.githubusercontent.com/xtensor-stack/xsimd/master/docs/source/xsimd.svg
- summary: Boost.simd provides a C++ abstraction of vector type, allowing for efficient vectorization of array computations. It has been (optionally) used as part of the expression template engine of Pythran for a long time, a great collaboration that led to several patches in boost.simd, and great performance for Pythran.
- date: Oct 31, 2019
- authors: Serge Guelton
-
- - url: https://medium.com/@QuantStack/xtensor-c-and-the-julia-challenge-643d4b119761
- title: Xtensor, C++, and the Julia Challenge
- image: https://miro.medium.com/max/1260/1*FU8d3qA5_wXxxd7Q_ZUEUQ.png
- summary: Last month, Simon Danisch launched the Julia Language Challenge, a programming challenge from a member of the Julia community to other programming languages. with high performances. This can be…
- date: Oct 24, 2018
- authors: Sylvain Corlay, Johan Mabille, Wolf Vollprecht
-
- - url: https://medium.com/@wolfv/the-julia-challenge-in-c-21272d36c002
- title: The Julia Challenge in C++
- image: https://raw.githubusercontent.com/JuliaLang/julia-logo-graphics/master/images/julia-logo-color.png
- summary: Recently, some folks of the Julia community were boasting about the expressiveness of the Julia programming language, compared to older languages. That’s how they started the Julia Challenge. The…
- date: Oct 12, 2018
- authors: Wolf Vollprecht
-
- - url: https://blog.jupyter.org/interpreted-c-for-gis-with-jupyter-ae191bc6fb8e
- title: Interpreter C++ for GIS with Jupyter
- image: https://miro.medium.com/max/933/1*FzUw4j635uJgWHZzc8_QiQ.png
- summary: The recent release of the Jupyter kernel for C++, based on the Cling interpreter enabled a number of new workflows for the users of the C++ programming language. More than a limited set of base…
- date: Apr 24, 2018
- authors: Martin Renou
-
- - url: https://blog.jupyter.org/authoring-custom-jupyter-widgets-2884a462e724
- title: Authoring Custom Jupyter Widgets
- image: https://miro.medium.com/max/933/1*FnkBH8yA-PfCNCxXA2PNIw.gif
- summary: Jupyter interactive widgets enhance the notebook experience by allowing users to create graphical user interfaces. They enable richer interaction with the data and computing resources. While the base…
- date: Mar 5, 2018
- authors: Olivier Borderies, Olivier Coudray, Pierre Marion
-
- - url: https://blog.jupyter.org/jupyter-receives-the-acm-software-system-award-d433b0dfe3a2
- title: Jupyter Receives the ACM Software System Award
- image: https://miro.medium.com/max/1333/1*4gB92wu3PVYsKabkNCkgjg.png
- summary: It is our pleasure to announce that Project Jupyter has been awarded the 2017 ACM Software System Award, a significant honor for the project. We are humbled to join an illustrious list of projects…
- date: Mar 2, 2018
- authors: Project Jupyter
-
- - url: https://blog.jupyter.org/a-diagram-editor-for-jupyterlab-a254121ff919
- title: A Diagram Editor for JupyterLab
- image: https://raw.githubusercontent.com/QuantStack/jupyterlab-drawio/master/drawio.gif
- summary: The new JupyterLab interface is much more than a replacement for the classic notebook. It aims to bring together all the pieces required for a complete scientific workflow. The extension-based…
- date: Feb 26, 2018
- authors: Wolf Vollprecht
-
- - url: https://medium.com/@wolfv/fast-reductions-in-xtensor-with-simd-212a8543960a
- title: Fast Reductions in Xtensor with Xsimd
- image: https://miro.medium.com/max/1260/1*lKyNuvdkZlJwhwdatalQmw.png
- summary: "xtensor has a wealth of mathematical functions available already: we support a lot of the NumPy API right there in C++. One of the areas where we were a bit slower than NumPy in the past were…"
- date: Feb 20, 2018
- authors: Wolf Vollprecht
-
- - url: https://medium.com/@wolfv/faster-xtensor-87fcbe7f5293
- title: Faster Xtensor
- image: https://miro.medium.com/max/1260/1*NXfksdUzAtHjlw3y8wwqDg.jpeg
- summary: Knowing the size of the memory that is to be allocated at compile time can improve the runtime performance a lot — the compiler can already reserve the required space on the stack (instead of having…
- date: Feb 18, 2018
- authors: Wolf Vollprecht
-
- - url: https://blog.jupyter.org/interactive-workflows-for-c-with-jupyter-fe9b54227d92
- title: Interactive Workflows for C++ with Jupyter
- image: https://miro.medium.com/max/933/1*t_9qAXtdkSXr-0tO9VvOzQ.png
- summary: Scientists, educators and engineers not only use programming languages to build software systems, but also in interactive workflows, using the tools available to explore a problem and reason about…
- date: Nov 29, 2017
- authors: Sylvain Corlay, Loic Gouarin, Johan Mabille, Wolf Vollprecht
-
- - url: https://medium.com/@SylvainCorlay/scientific-computing-in-a-polyglot-world-with-xtensor-d81ff3865d6
- title: Scientific Computing in a Polyglot World with Xtensor
- image: https://miro.medium.com/max/540/1*mtoK6AtRa0pNGGm576Yj0w.jpeg
- summary: The One Language to Rule Them All probably does not exist yet. In the world of interactive scientific computing, countless articles and blog posts argue on the merits of R, Python, Julia and other…
- date: May 5, 2017
- authors: Sylvain Corlay
\ No newline at end of file
diff --git a/src/components/blog/blogpostsDetails.json b/src/components/blog/blogpostsDetails.json
deleted file mode 100644
index 9a4df99fb..000000000
--- a/src/components/blog/blogpostsDetails.json
+++ /dev/null
@@ -1,1600 +0,0 @@
-[ {
- "url": "https://medium.com/@QuantStack/quantstack-steps-up-to-support-apache-arrow-with-new-dedicated-team-9ddc952f20e2",
- "title": "QuantStack Steps Up to Support Apache Arrow with New Dedicated Team",
- "image": "/img/blogposts/QuantStack-Steps-Up-to-Support-Apache-Arrow-with-New-Dedicated-Team.png",
- "summary": " We are thrilled to announce that QuantStack is starting a new team dedicated to the maintenance and development of Apache Arrow.",
- "date": "October 22, 2024",
- "authors": "Sylvain Corlay",
- "imageID": "blogpost-image-123",
- "imageNaturalWidth": 1700,
- "imageNaturalHeight": 900,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 144.529411765
-},
- {
- "url": "https://blog.jupyter.org/interactive-mapping-with-ipyopenlayers-2b8bc93bb6c4",
- "title": "Interactive Mapping with ipyopenlayers",
- "image": "/img/blogposts/Interactive-Mapping-with-ipyopenlayers.png",
- "summary": " In this article, we present the main features of ipyopenlayers and demonstrate how this library can transform your geospatial data into dynamic, interactive visualizations.",
- "date": "September 6, 2024",
- "authors": "Nour Cheour",
- "imageID": "blogpost-image-122",
- "imageNaturalWidth": 1400,
- "imageNaturalHeight": 642,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 125.64857142857142
- },
- {
- "url": "https://blog.jupyter.org/announcing-the-2023-jupyter-distinguished-contributor-award-recipients-1b2cc4ba203f",
- "title": "Announcing the 2023 cohort of Jupyter distinguished contributors",
- "image": "/img/blogposts/Announcing-the-2023-Jupyter-Distinguished-Contributors.png",
- "summary": "We are delighted to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2023 cohort.",
- "date": "September 4, 2024",
- "authors": "Johan Mabille, on behalf of the Jupyter Distinguished Contributors",
- "imageID": "blogpost-image-121",
- "imageNaturalWidth": 670,
- "imageNaturalHeight": 160,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 65.19402985074626
- },
- {
- "url": "https://blog.jupyter.org/ipydatagrid-is-now-part-of-project-jupyter-3b3dfb877664",
- "title": "Ipydatagrid is now part of Project Jupyter",
- "image": "/img/blogposts/Ipydatagrid-is-now-part-of-ProjectJupyter.png",
- "summary": "Today, we are proud to announce that the ipydatagrid open source project has been incorporated into Project Jupyter as part of the Jupyter Widgets subproject.",
- "date": "August 22, 2024",
- "authors": "Sylvain Corlay, on behalf of the Jupyter Widgets Council",
- "imageID": "blogpost-image-120",
- "imageNaturalWidth": 1490,
- "imageNaturalHeight": 760,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 138.2281879194631
- },
- {
- "url": "https://medium.com/@QuantStack/introducing-mamba-2-0-0e8d5c6d1d0c",
- "title": "Introducing Mamba 2.0",
- "image": "/img/blogposts/Introducing-Mamba-2-0.png",
- "summary": "We are excited to present the first release candidate of Mamba 2.0, a significant upgrade to the mamba package manager. This update brings considerable enhancements for both users and developers, following an extensive year-long development effort.",
- "date": "July 16, 2024",
- "authors": "Antoine Prouvost, Joel Lamotte, Johan Mabille, Hind Montassif",
- "imageID": "blogpost-image-119",
- "imageNaturalWidth": 828,
- "imageNaturalHeight": 328,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 108.14492753623189
- },
- {
- "url": "https://medium.com/@QuantStack/quantstack-open-source-internship-program-049755b6d44b",
- "title": "QuantStack open-source internship program",
- "image": "/img/blogposts/QuantStack-open-source-internship-program.png",
- "summary": "Today, we are announcing a new internship program that aims to empower a new cohort of open-source contributors and future maintainers to make an impact within our ecosystem.",
- "date": "July 9, 2024",
- "authors": "Sylvain Corlay",
- "imageID": "blogpost-image-118",
- "imageNaturalWidth": 1240,
- "imageNaturalHeight": 405,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 89.16532258064517
- },
- {
- "url": "https://medium.com/@QuantStack/jupytercad-2-0-4b9c4e18d22a",
- "title": "JupyterCAD 2.0",
- "image": "/img/blogposts/JupyterCAD-2-0.png",
- "summary": "We are thrilled to introduce JupyterCAD 2.0, the newest version of the JupyterLab-based CAD modeler.",
- "date": "July 5, 2024",
- "authors": "Trung Le, Martin Renou",
- "imageID": "blogpost-image-117",
- "imageNaturalWidth": 828,
- "imageNaturalHeight": 441,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 145.40217391304347
- },
- {
- "url": "https://blog.jupyter.org/jupytergis-d63b7adf9d0c",
- "title": "JupyterGIS",
- "image": "/img/blogposts/JupyterGIS.png",
- "summary": "We are thrilled to announce that the European Space Agency (ESA) is funding our proposal “Real-time collaboration and collaborative editing for GIS workflows with Jupyter and QGIS.”",
- "date": "June 12, 2024",
- "authors": "Sylvain Corlay, Anne Fouilloux, Monika Weissschnur",
- "imageID": "blogpost-image-116",
- "imageNaturalWidth": 1400,
- "imageNaturalHeight": 621,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 121.09500000000001
- },
- {
- "url": "https://medium.com/@SylvainCorlay/commit-cdf57415b94b",
- "title": "Commit!",
- "image": "/img/blogposts/Commit.png",
- "summary": "Open-source projects are not just about the latest exciting updates and features, but also the principles and people that drive these projects to success. In this blog post, I reflect on the dynamics…",
- "date": "May 29, 2024",
- "authors": "Sylvain Corlay",
- "imageID": "blogpost-image-115",
- "imageNaturalWidth": 1600,
- "imageNaturalHeight": 896,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 152.88
- },
- {
- "url": "/blogs/Fanny",
- "title": "In memoriam: Fanny Loustau Chartez",
- "image": "/img/blogposts/In-memoriam-Fanny-Loustau-Chartez.jpg",
- "summary": "It is with great sadness that we announce the passing of our colleague and friend, Fanny Loustau Chartez, who served as the Chief Financial Officer of QuantStack since 2021.",
- "date": "May 16, 2024",
- "authors": "Sylvain Corlay",
- "imageID": "blogpost-image-114",
- "imageNaturalWidth": 333,
- "imageNaturalHeight": 333,
- "imageRenderedWidth": 180,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://medium.com/@PyDataParis/announcing-pydata-paris-2024-700220accc72",
- "title": "Announcing PyData Paris 2024",
- "image": "/img/blogposts/Announcing-PyData-Paris-2024.png",
- "summary": "We are thrilled to announce the upcoming PyData Paris 2024, the gathering of the open-source data science and AI/ML community in France. PyData Paris will take place at the Cité des Sciences from September 25 to September 26, 2024.",
- "date": "March 11, 2024",
- "authors": "Sylvain Corlay",
- "imageID": "blogpost-image-113",
- "imageNaturalWidth": 1100,
- "imageNaturalHeight": 733,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 181.91727272727275
- },
- {
- "url": "https://blog.jupyter.org/meet-xeus-r-a-future-proof-jupyter-kernel-for-r-1adc5fdd09ab",
- "title": "Meet Xeus-R: a future-proof Jupyter kernel for R",
- "image": "/img/blogposts/Meet-Xeus-R-a-future-proof-Jupyter-kernel-for-R.png",
- "summary": "Today, we, a collaborative team led by Romain François and supported by QuantStack, are thrilled to announce the initial release of Xeus-R, a future-proof Jupyter kernel for R.",
- "date": "January 22nd, 2024",
- "authors": "Romain François",
- "imageID": "blogpost-image-112",
- "imageNaturalWidth": 1400,
- "imageNaturalHeight": 540,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 105.3
- },
- {
- "url": "https://medium.com/@QuantStack/quantstack-2023-in-review-94fea0a35520",
- "title": "QuantStack: 2023 in review",
- "image": "/img/blogposts/QuantStack-2023-in-review.png",
- "summary": "Since QuantStack was founded in 2016, we have remained committed to releasing our work under permissive open-source licenses. Here are some highlights of the 2023 achievements. Buckle up!",
- "date": "January 3rd, 2024",
- "authors": "Sylvain Corlay",
- "imageID": "blogpost-image-111",
- "imageNaturalWidth": 1600,
- "imageNaturalHeight": 893,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 152.368125
- },
- {
- "url": "https://blog.jupyter.org/recent-keyboard-navigation-improvements-in-jupyter-4df32f97628d",
- "title": "Recent keyboard navigation improvements in Jupyter",
- "image": "/img/blogposts/Recent-keyboard-navigation-improvements-in-Jupyter.png",
- "summary": "Upcoming versions of JupyterLab (4.1.0) and Notebook (7.1.0) will include major keyboard accessibility fixes.",
- "date": "December 16th, 2023",
- "authors": "Nicolas Brichet, Gabriel Fouasnon",
- "imageID": "blogpost-image-110",
- "imageNaturalWidth": 320,
- "imageNaturalHeight": 172,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 146.7375
- },
- {
- "url": "https://blog.jupyter.org/and-voici-e02367197ba2",
- "title": "And Voici!",
- "image": "/img/blogposts/And-Voici.png",
- "summary": "Voici (meaning “here is” in French) is a novel project reshaping Jupyter-based interactive dashboards by combining Voilà and JupyterLite features. It facilitates the creation of dynamic, in-browser environments for data visualization and exploration.",
- "date": "December 6th, 2023",
- "authors": "Trung Duc Le, Martin Renou",
- "imageID": "blogpost-image-109",
- "imageNaturalWidth": 1400,
- "imageNaturalHeight": 559,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 109.005
- },
- {
- "url": "https://blog.jupyter.org/plug-your-application-into-the-jupyter-world-805e48918801",
- "title": "Plug your application into the Jupyter world",
- "image": "/img/blogposts/Plug-your-application-into-the-Jupyter-world.png",
- "summary": "Kernels are a simple but powerful abstraction in the Jupyter architecture. They encapsulate language interpreters and make them accessible through a standardized interface. This is the key to…",
- "date": "October 23rd, 2023",
- "authors": "David Brochart",
- "imageID": "blogpost-image-108",
- "imageNaturalWidth": 715,
- "imageNaturalHeight": 300,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 114.54545454545455
- },
- {
- "url": "https://blog.jupyter.org/voil%C3%A0-0-5-0-homecoming-66f2465aa86f",
- "title": "Voilà 0.5 - Homecoming",
- "image": "/img/blogposts/Voila-0-5-Homecoming.png",
- "summary": "Following the launch of Jupyter Notebook 7, it is now Voilà’s turn to join the JupyterLab family. In Version 0.5.0, the front-end of Voilà has been rebuilt from scratch using JupyterLab 4.0 components, just like in the case of Notebook 7.",
- "date": "September 25th, 2023",
- "authors": "Jeremy Tuloup, Martin Renou, Trung Duc Le",
- "imageID": "blogpost-image-107",
- "imageNaturalWidth": 1512,
- "imageNaturalHeight": 1111,
- "imageRenderedWidth": 244.96849684968495,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://blog.jupyter.org/announcing-jupyter-notebook-7-8d6d66126dcf",
- "title": "Announcing Jupyter Notebook 7",
- "image": "/img/blogposts/Announcing-Jupyter-Notebook-7.jpg",
- "summary": "Jupyter Notebook 7 is the most significant release of the Jupyter Notebook in years. Some highlights of this release include real-time collaboration, interactive debugging, table of contents, theming and dark mode, internationalization, improved accessibility, compact view on mobile devices.",
- "date": "July 26th, 2023",
- "authors": "Jeremy Tuloup",
- "imageID": "blogpost-image-106",
- "imageNaturalWidth": 1400,
- "imageNaturalHeight": 788,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 153.66
- },
- {
- "url": "https://blog.jupyter.org/jupytercon-2023-recordings-now-live-on-youtube-17564b75a2a",
- "title": "🎉 JupyterCon 2023 recordings now live on YouTube! 🎉",
- "image": "/img/blogposts/JupyterCon-2023-recordings-now-live-on-YouTube.png",
- "summary": "Get ready to relive the magic of JupyterCon 2023, because the long-awaited moment is finally here! The JupyterCon YouTube channel has just dropped a treasure trove of content — all the talk and keynote recordings from the most epic conference of the year.",
- "date": "July 22nd, 2023",
- "authors": "Gayle Ollington, Sylvain Corlay",
- "imageID": "blogpost-image-105",
- "imageNaturalWidth": 1011,
- "imageNaturalHeight": 328,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 88.56973293768546
- },
- {
- "url": "https://blog.jupyter.org/a-theme-editor-for-jupyterlab-8f08ab62894d",
- "title": "A theme editor for JupyterLab",
- "image": "/img/blogposts/A-theme-editor-for-JupyterLab.png",
- "summary": "To lower the bar for customizing JupyterLab we created a new tool providing a simple interface for tuning the JupyterLab appearance interactively.",
- "date": "June 19th, 2023",
- "authors": "Florence Haudin",
- "imageID": "blogpost-image-104",
- "imageNaturalWidth": 1400,
- "imageNaturalHeight": 1015,
- "imageRenderedWidth": 248.27586206896552,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://blog.jupyter.org/collaborative-cad-in-jupyterlab-8eb9e8f81f0",
- "title": "Collaborative CAD in JupyterLab",
- "image": "/img/blogposts/Collaborative-CAD-in-JupyterLab.png",
- "summary": "Introducing JupyterCAD, a tool that integrates Computer-Aided Design (CAD) capabilities into JupyterLab.",
- "date": "June 2nd, 2023",
- "authors": "Duc Trung Le, Martin Renou",
- "imageID": "blogpost-image-103",
- "imageNaturalWidth": 1400,
- "imageNaturalHeight": 627,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 122.265
- },
- {
- "url": "https://blog.jupyter.org/congratulations-distinguished-contributors-7a7b215b8bd0",
- "title": "Congratulations, Distinguished Contributors!",
- "image": "/img/blogposts/Congratulations-Distinguished-Contributors.png",
- "summary": "We are proud to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2022 cohort of contributors.",
- "date": "June 2nd, 2023",
- "authors": "Johan Mabille",
- "imageID": "blogpost-image-102",
- "imageNaturalWidth": 1202,
- "imageNaturalHeight": 672,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 152.62562396006655
- },
- {
- "url": "https://blog.jupyter.org/embed-interactive-itkwidgets-3d-renderings-into-jupyterlite-deployments-10eb9ea30980",
- "title": "Embed interactive itkwidgets 3D renderings into JupyterLite deployments",
- "image": "/img/blogposts/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.gif",
- "summary": "A tutorial that demonstrates a zero-server, interactive 3D rendering notebook and walks through the quick and easy configuration that can be customized to your needs.",
- "date": "March 15th, 2023",
- "authors": "Matt McCormick, Brianna Major, Jeremy Tuloup, Wei Ouyang, Stephen Aylward",
- "imageID": "blogpost-image-101",
- "imageNaturalWidth": 600,
- "imageNaturalHeight": 641,
- "imageRenderedWidth": 168.48673946957877,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://blog.jupyter.org/improving-the-accessibility-of-jupyter-6c695db518d3",
- "title": "Improving the accessibility of Jupyter",
- "image": "/img/blogposts/Improving-the-accessibility-of-Jupyter.png",
- "summary": "This article presents some of the recent accessibility improvements in the Jupyter Notebook codebase.",
- "date": "February 24th, 2023",
- "authors": "Nicolas Brichet, Johan Mabille, Jeremy Tuloup, Frédéric Collonval, Sylvain Corlay",
- "imageID": "blogpost-image-100",
- "imageNaturalWidth": 1238,
- "imageNaturalHeight": 482,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 106.28917609046849
- },
- {
- "url": "https://blog.jupyter.org/a-jupyter-kernel-for-gnu-octave-b6d29e56341f",
- "title": "A Jupyter kernel for GNU Octave",
- "image": "/img/blogposts/A-Jupyter-kernel-for-GNU-Octave.png",
- "summary": "We are happy to announce the xeus-octave project, a Jupyter kernel for GNU Octave. Xeus-octave was created by Giulio Girardi, recently joined by Antoine Prouvost - and has been incorporated into the Project Jupyter governance.",
- "date": "January 11th, 2023",
- "authors": "Giulio Girardi, Antoine Prouvost",
- "imageID": "blogpost-image-99",
- "imageNaturalWidth": 1308,
- "imageNaturalHeight": 482,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 100.60091743119266
- },
- {
- "url": "https://medium.com/@QuantStack/quantstack-2022-in-review-7d4704b1db42",
- "title": "QuantStack: 2022 in review",
- "image": "/img/blogposts/QuantStack-2022-in-review.webp",
- "summary": "2022 was an amazing year of innovation for the open-source developers at QuantStack. Developments range from major improvements to the Jupyter project to the packaging ecosystem and high-performance computing.",
- "date": "December 26th, 2022",
- "authors": "Sylvain Corlay",
- "imageID": "blogpost-image-98",
- "imageNaturalWidth": 1400,
- "imageNaturalHeight": 781,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 152.295
- },
- {
- "url": "https://medium.com/@AntoineProuvost/managing-conflicts-with-mamba-6a5fa10ed6a",
- "title": "Managing conflicts with Mamba",
- "image": "/img/blogposts/Managing-conflicts-with-Mamba.png",
- "summary": "A key aspect of package management is finding a set of compatible versions of the required packages. Indeed, even in the case when few packages are explicitly required, second-order dependencies may…",
- "date": "November 29th, 2022",
- "authors": "Antoine Prouvost",
- "imageID": "blogpost-image-97",
- "imageNaturalWidth": 2072,
- "imageNaturalHeight": 1460,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 192.36486486486487
- },
- {
- "url": "https://blog.jupyter.org/jupytercon-is-back-in-2023-90e5c25eeec9",
- "title": "JupyterCon is back in 2023",
- "image": "/img/blogposts/JupyterCon-is-back-in-2023.png",
- "summary": "JupyterCon 2023 will be held May 10–12 (Thursday to Friday) in the city of light, Paris, France at the largest science museum in Europe, the Cité des Sciences et de l’Industrie.",
- "date": "October 17th, 2022",
- "authors": "Gayle Ollington",
- "imageID": "blogpost-image-96",
- "imageNaturalWidth": 1400,
- "imageNaturalHeight": 783,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 152.685
- },
- {
- "url": "https://blog.jupyter.org/accelerating-jupyterlab-68942bb8d602",
- "title": "Accelerating JupyterLab",
- "image": "/img/blogposts/Accelerating-JupyterLab.png",
- "summary": "The next major release of JupyterLab will be significantly faster than previous versions. This was achieved both through systematic tracking of performance bugs and through significant upgrades to the Jupyter communication protocol and rendering mechanism for documents.",
- "date": "September 15th, 2022",
- "authors": "Frédéric Collonval, Johan Mabille, David Brochart, Afshin Darian",
- "imageID": "blogpost-image-95",
- "imageNaturalWidth": 1400,
- "imageNaturalHeight": 781,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 152.295
- },
- {
- "url": "https://blog.jupyter.org/upgrading-nbgrader-99c56ae56c47",
- "title": "Upgrading nbgrader",
- "image": "/img/blogposts/Upgrading-nbgrader.png",
- "summary": "Project Jupyter provides a broad collection of open-source tools for interactive computing that has become ubiquitous in data science and scientific computing, and is very popular in educational…",
- "date": "September 15th, 2022",
- "authors": "Nicolas Brichet",
- "imageID": "blogpost-image-94",
- "imageNaturalWidth": 512,
- "imageNaturalHeight": 256,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 136.5
- },
- {
- "url": "https://blog.jupyter.org/visual-programming-in-jupyterlab-with-blockly-7731ec3e113c",
- "title": "Visual programming in JupyterLab with Blockly",
- "image": "/img/blogposts/Visual-programming-in-JupyterLab-with-Blockly.png",
- "summary": "When moving from block-based programming to a more classical language like Python, students often have to switch to a completely new environment. In order to provide a smooth ramp of complexity for learners, we designed a JupyterLab extension for Blockly so that Jupyter can be used from the very first steps of their learning journey.",
- "date": "July 29th, 2022",
- "authors": "Denisa Checiu, Carlos Herrero",
- "imageID": "blogpost-image-93",
- "imageNaturalWidth": 1400,
- "imageNaturalHeight": 770,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 150.15
- },
- {
- "url": "https://blog.jupyter.org/mamba-meets-jupyterlite-88ef49ac4dc8",
- "title": "Mamba meets JupyterLite",
- "image": "/img/blogposts/Mamba-meets-JupyterLite.png",
- "summary": "JupyterLite is a Jupyter distribution that runs entirely in the web browser without any server components. To achieve this, all language kernels must also run in the browser. A significant benefit of…",
- "date": "July 14th, 2022",
- "authors": "Thorsten Beier, Martin Renou",
- "imageID": "blogpost-image-92",
- "imageNaturalWidth": 1400,
- "imageNaturalHeight": 1032,
- "imageRenderedWidth": 244.1860465116279,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://blog.jupyter.org/inspector-jupyterlab-404cce3e1df6",
- "title": "Inspector JupyterLab",
- "image": "/img/blogposts/Inspector-JupyterLab.png",
- "summary": "JupyterLab provides multiple ways to improve your coding workflow: code highlighting, code completion, theming, debugger with rich variable rendering and more.",
- "date": "April 11th, 2022",
- "authors": "Martin Renou",
- "imageID": "blogpost-image-91",
- "imageNaturalWidth": 675,
- "imageNaturalHeight": 540,
- "imageRenderedWidth": 225,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://blog.pyodide.org/posts/canvas-renderer-matplotlib-in-pyodide/",
- "title": "HTML5 based renderer for Matplotlib in Pyodide",
- "image": "/img/blogposts/HTML5--based-renderer-for-Matplotlib-in-Pyodide.png",
- "summary": "In this post, we present a new backend for Matplotlib enabling the rendering of figures in the browser by leveraging the <canvas> element. This showcases how JavaScript and Python can interact with each other, thanks to Pyodide.",
- "date": "April 1st, 2022",
- "authors": "Madhur Tandon",
- "imageID": "blogpost-image-90",
- "imageNaturalWidth": 2268,
- "imageNaturalHeight": 1062,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 127.83333333333333
- },
- {
- "url": "https://wolfv.medium.com/the-future-of-mamba-fdf6d628b3df",
- "title": "The future of mamba",
- "image": "/img/blogposts/The-future-of-mamba.png",
- "summary": "The recent adoption of libmamba by the conda project was a great validation of our work. Several other game-changing innovations are in the works by the mamba team. Stay tuned!",
- "date": "March 31st, 2022",
- "authors": "Wolf Vollprecht",
- "imageID": "blogpost-image-89",
- "imageNaturalWidth": 1400,
- "imageNaturalHeight": 836,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 163.01999999999998
- },
- {
- "url": "https://blog.jupyter.org/congratulations-distinguished-contributors-bc349fa60d68",
- "title": "Congratulations, Distinguished Contributors!",
- "image": "/img/blogposts/Congratulations-Distinguished-Contributors.png",
- "summary": "We are proud to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2021 cohort of contributors.",
- "date": "March 16th, 2022",
- "authors": "Johan Mabille",
- "imageID": "blogpost-image-88",
- "imageNaturalWidth": 1202,
- "imageNaturalHeight": 672,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 152.62562396006655
- },
- {
- "url": "https://blog.jupyter.org/jupyter-everywhere-f8151c2cc6e8",
- "title": "Jupyter Everywhere",
- "image": "/img/blogposts/Jupyter-Everywhere.jpg",
- "summary": "Easily embed a console, a notebook, or a fully-fledged IDE on any web page.",
- "date": "March 15th, 2022",
- "authors": "Martin Renou, Jeremy Tuloup",
- "imageID": "blogpost-image-87",
- "imageNaturalWidth": 671,
- "imageNaturalHeight": 372,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 151.35022354694487
- },
- {
- "url": "https://medium.com/@kmathewos92/ros2-support-for-zethus-e6ecfcdb1c4c",
- "title": "ROS2 support for Zethus",
- "image": "/img/blogposts/ROS2-support-for-Zethus.png",
- "summary": "Zethus is an Open Source library for Robot visualization in the browser. Initially developed by Rapyuta Robotics, it provides a web-based…",
- "date": "February 17th, 2022",
- "authors": "Kedus Mathewos",
- "imageID": "blogpost-image-86",
- "imageNaturalWidth": 1400,
- "imageNaturalHeight": 788,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 153.66
- },
- {
- "url": "https://medium.com/@QuantStack/quantstack-2021-in-review-fe5eac2e0f6d",
- "title": "QuantStack: 2021 in review",
- "image": "/img/blogposts/QuantStack-2021-in-review.png",
- "summary": "This was a crazy year of innovation for the open-source team at QuantStack. From JupyterLab to the packaging ecosystem and high-performance computing, we made some major strides in all areas, while almost doubling the size of the team.",
- "date": "December 18th, 2021",
- "authors": "Sylvain Corlay",
- "imageID": "blogpost-image-85",
- "imageNaturalWidth": 2500,
- "imageNaturalHeight": 1400,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 152.88
- },
- {
- "url": "https://blog.jupyter.org/jupyter-games-cda20dc15a21",
- "title": "Jupyter Games",
- "image": "/img/blogposts/Jupyter-Games.png",
- "summary": "Making their own tiny video games can be a great way for kids to learn programming in a playful matter. While Jupyter is widely used as a scientific and educational tool, Jupyter is seldom used as a…",
- "date": "December 14th, 2021",
- "authors": "Thorsten Beier",
- "imageID": "blogpost-image-84",
- "imageNaturalWidth": 2427,
- "imageNaturalHeight": 1203,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 135.31891223733004
- },
- {
- "url": "https://blog.jupyter.org/need-for-speed-voil%C3%A0-edition-a9e1300ab3b2",
- "title": "Need for speed: Voilà edition",
- "image": "/img/blogposts/Need-for-speed-Voila-edition.png",
- "summary": "Voilà turns Jupyter notebooks into standalone applications without requiring any modification to the content. You want to share your content with non-technical readers? Just call Voilà with the…",
- "date": "December 10th, 2021",
- "authors": "Duc Trung Le",
- "imageID": "blogpost-image-83",
- "imageNaturalWidth": 2000,
- "imageNaturalHeight": 691,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 94.3215
- },
- {
- "url": "https://adelsalle.medium.com/towards-a-more-secure-conda-ecosystem-5ce65a27d7d5",
- "title": "Towards a more secure conda ecosystem",
- "image": "/img/blogposts/Towards-a-more-secure-conda-ecosystem.png",
- "summary": "Supply chain security is crucial to the overall security of package managers, which are a major attack vector of information systems. Today, we are pleased to announce that mamba has gained the…",
- "date": "November 16th, 2021",
- "authors": "Adrien Delsalle",
- "imageID": "blogpost-image-82",
- "imageNaturalWidth": 2000,
- "imageNaturalHeight": 625,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 85.3125
- },
- {
- "url": "https://johan-mabille.medium.com/toward-a-faster-and-thinner-xsimd-9e4eef41bc17",
- "title": "Toward a faster and thinner xsimd",
- "image": "/img/blogposts/Toward-a-faster-and-thinner-xsimd.png",
- "summary": "xsimd, the SIMD library by QuantStack, got more and more adoption in recent years. While it helped improve the library, adoption also brought new requirements. Among them was the abitility to...",
- "date": "October 29th, 2021",
- "authors": "Serge Guelton, Johan Mabille",
- "imageID": "blogpost-image-81",
- "imageNaturalWidth": 832,
- "imageNaturalHeight": 251,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 82.359375
- },
- {
- "url": "https://blog.jupyter.org/xeus-lite-379e96bb199d",
- "title": "Xeus-Lite",
- "image": "/img/blogposts/Xeus-Lite.png",
- "summary": "JupyterLite is a JupyterLab distribution that runs entirely in the web browser, backed by in-browser language kernels. Xeus is C++ library for writing Jupyter kernels. In this blogpost we show how…",
- "date": "October 25th, 2021",
- "authors": "Thorsten Beier",
- "imageID": "blogpost-image-80",
- "imageNaturalWidth": 2010,
- "imageNaturalHeight": 1582,
- "imageRenderedWidth": 228.69785082174462,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://wolfv.medium.com/the-mamba-project-and-the-czi-grant-ec88fb27c25",
- "title": "The mamba project and the CZI grant",
- "image": "/img/blogposts/The-mamba-project-and-the-CZI-grant.png",
- "summary": "For those who don't know yet: mamba is a fast, cross-platform & non-language-specific package manager widely used in the scientific space. Mamba works with conda -packages and works great in tandem…",
- "date": "October 19th, 2021",
- "authors": "Wolf Vollprecht",
- "imageID": "blogpost-image-79",
- "imageNaturalWidth": 2000,
- "imageNaturalHeight": 877,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 119.7105
- },
- {
- "url": "https://blog.jupyter.org/looking-at-notebooks-from-a-new-perspective-bfd06797f188",
- "title": "Looking at notebooks from a new perspective",
- "image": "/img/blogposts/Looking-at-notebooks-from-a-new-perspective.png",
- "summary": "Jupyter notebooks are a great tool for practitioners of scientific computing from the research phase of their work to the communication of their results. The interleaving of code and rich text makes…",
- "date": "October 5th, 2021",
- "authors": "Mariana Meireles",
- "imageID": "blogpost-image-78",
- "imageNaturalWidth": 1500,
- "imageNaturalHeight": 750,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 136.5
- },
- {
- "url": "https://blog.jupyter.org/xeus-2-0-cb460d4daed4",
- "title": "Xeus 2.0",
- "image": "/img/blogposts/Xeus-2-0.png",
- "summary": "We have just released Xeus 2.0. This is a major release of the library. While it includes backward-incompatible changes, they are very limited and upgrading your kernels should be relatively easy…",
- "date": "September 28th, 2021",
- "authors": "Johan Mabille, Sylvain Corlay",
- "imageID": "blogpost-image-77",
- "imageNaturalWidth": 1000,
- "imageNaturalHeight": 600,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 163.79999999999998
- },
- {
- "url": "https://blog.jupyter.org/from-jupyter-to-the-moon-2e432df402c8",
- "title": "From Jupyter to the Moon",
- "image": "/img/blogposts/From-Jupyter-to-the-Moon.png",
- "summary": "A key principle in Jupyter’s design is language agnosticism, and one of the main extension points of the Jupyter ecosystem is the kernel, the part of the architecture responsible for executing the…",
- "date": "September 24th, 2021",
- "authors": "Thorsten Beier",
- "imageID": "blogpost-image-76",
- "imageNaturalWidth": 1375,
- "imageNaturalHeight": 562,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 111.58254545454547
- },
- {
- "url": "https://blog.jupyter.org/jupyterlite-jupyter-%EF%B8%8F-webassembly-%EF%B8%8F-python-f6e2e41ab3fa",
- "title": "Jupyter ❤️ WebAssembly ❤️ Python",
- "image": "/img/blogposts/Jupyter-WebAssembly-Python.png",
- "summary": "JupyterLite is a JupyterLab distribution that runs entirely in the web browser, backed by in-browser language kernels. JupyterLite is a reboot of several attempts at making a full static Jupyter…",
- "date": "July 13th, 2021",
- "authors": "Jeremy Tuloup",
- "imageID": "blogpost-image-75",
- "imageNaturalWidth": 512,
- "imageNaturalHeight": 512,
- "imageRenderedWidth": 180,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://wolfv.medium.com/mamba-0-15-0-475d1dca0418",
- "title": "Mamba 0.15.0",
- "image": "/img/blogposts/Mamba-0-15-0.png",
- "summary": "We’ve just dropped one of the biggest releases of mamba (the fast conda package manager)— along with some nice improvements in libsolv! This is a quick update on some new and improved features in…",
- "date": "July 9th, 2021",
- "authors": "Wolf Vollprecht, Adrien Delsalle",
- "imageID": "blogpost-image-74",
- "imageNaturalWidth": 2000,
- "imageNaturalHeight": 904,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 123.396
- },
- {
- "url": "https://www.polytechnique.edu/fondation/content/le-calcul-haute-performance-au-service-de-l%E2%80%99innovation",
- "title": "Le calcul haute performance au service de l'innovation (in French)",
- "image": "/img/blogposts/Le-calcul-haute-performance-au-service-de-l'innovation-in-French.png",
- "summary": "Led by Professor Marc Massot (Center for Applied Mathematics), the HPC@Maths initiative aims at developing a strong expertise in high-performance computing at École Polytechnique. This project is supported by the X Foundation, and by QuantStack.",
- "date": "June 18th, 2021",
- "authors": "Fondation École Polytechnique",
- "imageID": "blogpost-image-73",
- "imageNaturalWidth": 280,
- "imageNaturalHeight": 396,
- "imageRenderedWidth": 127.27272727272727,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://blog.jupyter.org/how-we-made-jupyter-notebooks-collaborative-with-yjs-b8dff6a9d8af",
- "title": "How we made Jupyter notebooks collaborative with Yjs",
- "image": "/img/blogposts/How-we-made-Jupyter-notebooks-collaborative-with-Yjs.png",
- "summary": "Collaborative editing — à la Google Docs — is a feature that you still rarely find in applications. One of the few good things that came out of this pandemic is that more people seem to care about…",
- "date": "June 12th, 2021",
- "authors": "Kevin Jahns",
- "imageID": "blogpost-image-72",
- "imageNaturalWidth": 800,
- "imageNaturalHeight": 258,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 88.04249999999999
- },
- {
- "url": "https://blog.jupyter.org/retrolab-a-jupyterlab-distribution-with-a-retro-look-and-feel-8096b8b223d0",
- "title": "RetroLab - A JupyterLab distribution with a retro look and feel",
- "image": "/img/blogposts/RetroLab-A-JupyterLab-distribution-with-a-retro-look-and-feel.png",
- "summary": "RetroLab is an alternative JupyterLab distribution, built from the ground-up, providing a notebook interface with a retro look and feel. Currently at version 3.0, JupyterLab provides an advanced…",
- "date": "May 27th, 2021",
- "authors": "Jeremy Tuloup",
- "imageID": "blogpost-image-71",
- "imageNaturalWidth": 1000,
- "imageNaturalHeight": 750,
- "imageRenderedWidth": 240,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://adelsalle.medium.com/rhumba-the-fast-r-distribution-is-available-on-windows-fa975b2aefa2",
- "title": "Rhumba, the fast R distribution is available on Windows",
- "image": "/img/blogposts/Rhumba-the-fast-R-distribution-is-available-on-Windows.gif",
- "summary": "A few months ago, Mariana Meireles created Rhumba, a fast R package manager and distribution leveraging the conda-forge initiative and the mamba library. Today, we’re happy to announce a new major…",
- "date": "May 18th, 2021",
- "authors": "Adrien Delsalle",
- "imageID": "blogpost-image-70",
- "imageNaturalWidth": 1285,
- "imageNaturalHeight": 771,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 163.79999999999998
- },
- {
- "url": "https://blog.jupyter.org/enabling-the-jupyterlab-debugger-with-ipykernel-8d7248f522b0",
- "title": "Enabling the JupyterLab Debugger with ipykernel",
- "image": "/img/blogposts/Enabling-the-JupyterLab-Debugger-with-ipykernel.gif",
- "summary": "JupyterLab 3.0 includes a visual debugger that allows to interactively set breakpoints, step into functions, and inspect variables with any Jupyter kernel that implements the Jupyter debugger…",
- "date": "May 13th, 2021",
- "authors": "Sylvain Corlay, Johan Mabille",
- "imageID": "blogpost-image-69",
- "imageNaturalWidth": 2107,
- "imageNaturalHeight": 1134,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 146.93023255813952
- },
- {
- "url": "https://medium.com/@mari_meir/jupyter-%EF%B8%8F-%EF%B8%8F-cytoscape-e2e77be8e0f9",
- "title": "Jupyter ❤️ Cytoscape",
- "image": "/img/blogposts/Jupyter-Cytoscape.png",
- "summary": "Cytoscape is an open source software platform for visualizing complex networks and integrating these with any type of attribute data. While the project was started in the life sciences community, it…",
- "date": "May 11th, 2021",
- "authors": "Mariana Meireles",
- "imageID": "blogpost-image-68",
- "imageNaturalWidth": 250,
- "imageNaturalHeight": 250,
- "imageRenderedWidth": 180,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://johan-mabille.medium.com/zarray-a-dynamic-expression-system-based-on-xtensor-ded69f37ff5e",
- "title": "zarray: a dynamic expression system based on xtensor",
- "image": "/img/blogposts/zarray-a-dynamic-expression-system-based-on-xtensor.png",
- "summary": "In this article we demonstrate how we pushed xtensor one step further, implementing a dynamic expression system on top of it. xtensor is a comprehensive C++framework for multi-dimensional array…",
- "date": "Apr 29th, 2021",
- "authors": "Johan Mabille",
- "imageID": "blogpost-image-67",
- "imageNaturalWidth": 391,
- "imageNaturalHeight": 391,
- "imageRenderedWidth": 180,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://blog.jupyter.org/nbterm-jupyter-notebooks-in-the-terminal-6a2b55d08b70",
- "title": "nbterm: Jupyter Notebooks in the terminal",
- "image": "/img/blogposts/nbterm-Jupyter-Notebooks-in-the-terminal.png",
- "summary": "Jupyter notebooks are mostly known for their web-based user interface, such as JupyterLab or the Classic Notebook. They offer a great user experience, allow for rich output rendering, provide…",
- "date": "Apr 26th, 2021",
- "authors": "David Brochart",
- "imageID": "blogpost-image-66",
- "imageNaturalWidth": 1120,
- "imageNaturalHeight": 436,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 106.27499999999999
- },
- {
- "url": "https://blog.jupyter.org/abracadabra-bringing-the-magics-to-xeus-python-9d17bcfacb4",
- "title": "Abracadabra! Bringing the Magics to Xeus-Python",
- "image": "/img/blogposts/Abracadabra-Bringing-the-Magics-to-Xeus-Python.gif",
- "summary": "Last year, we set ourselves to implement a visual debugger for JupyterLab. This endeavor required major developments in the JupyterLab…",
- "date": "Feb 18th, 2021",
- "authors": "Martin Renou",
- "imageID": "blogpost-image-65",
- "imageNaturalWidth": 1250,
- "imageNaturalHeight": 750,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 163.79999999999998
- },
- {
- "url": "https://medium.com/robostack/cross-platform-conda-packages-for-ros-fa1974fd1de3",
- "title": "Cross-platform Conda Packages for ROS",
- "image": "/img/blogposts/Cross-platform-Conda-Packages-for-ROS.jpg",
- "summary": "2020 has been a busy year for the RoboStack project. We collaboratively published ros-noetic on four platforms (Windows, macOS, Linux x64 and ARM64) and revamped how ROS packages can be released on…",
- "date": "February 16th, 2021",
- "authors": "Wolf Vollprecht, Tobias Fischer",
- "imageID": "blogpost-image-64",
- "imageNaturalWidth": 2000,
- "imageNaturalHeight": 1345,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 183.5925
- },
- {
- "url": "https://blog.jupyter.org/genomic-data-representation-in-jupyter-c57a5bb518d6",
- "title": "Genomic Data representation in Jupyter",
- "image": "/img/blogposts/Genomic-Data-representation-in-Jupyter.gif",
- "summary": "If there is one thing that recent events tell us, it is that genomics is a large source of data, and that its manipulation and understanding allow for the quick development of new drugs and…",
- "date": "February 8th, 2021",
- "authors": "Jean-David Harrouet",
- "imageID": "blogpost-image-63",
- "imageNaturalWidth": 800,
- "imageNaturalHeight": 487,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 166.18875
- },
- {
- "url": "https://blog.jupyter.org/an-sql-solution-for-jupyter-ef4a00a0d925?postPublishedType=initial",
- "title": "An SQL Solution for Jupyter",
- "image": "/img/blogposts/An-SQL-Solution-for-Jupyter.png",
- "summary": "A few months ago we released xeus-sqlite, a Jupyter kernel that allows users to make SQLite queries directly from the notebook. With the needs of the Jupyter data science community in mind we decided…",
- "date": "February 3rd, 2021",
- "authors": "Mariana Meireles",
- "imageID": "blogpost-image-62",
- "imageNaturalWidth": 620,
- "imageNaturalHeight": 530,
- "imageRenderedWidth": 210.56603773584905,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://blog.jupyter.org/a-curiously-recurring-widget-library-261a65bd56fe",
- "title": "A Curiously Recurring Widget Library",
- "image": "/img/blogposts/A-Curiously-Recurring-Widget-Library.png",
- "summary": "Diving into the implementation of xwidgets…",
- "date": "January 27th, 2021",
- "authors": "Sylvain Corlay",
- "imageID": "blogpost-image-61",
- "imageNaturalWidth": 1120,
- "imageNaturalHeight": 803,
- "imageRenderedWidth": 251.0585305105853,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://blog.jupyter.org/robotic-process-automation-with-jupyterlab-713b5630e457",
- "title": "Robotic Process Automation with JupyterLab",
- "image": "/img/blogposts/Robotic-Process-Automation-with-JupyterLab.png",
- "summary": "Robotic Process Automation (RPA) differs from classical automation tools in that the actions to automate can be developed by observing a user perform a task in a graphical user interface, across…",
- "date": "January 18th, 2021",
- "authors": "Martin Renou, Johan Mabille",
- "imageID": "blogpost-image-60",
- "imageNaturalWidth": 700,
- "imageNaturalHeight": 313,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 122.07
- },
- {
- "url": "https://blog.jupyter.org/dashboarding-with-jupyterlab-3-789fcb1a5857",
- "title": "Dashboarding with JupyterLab 3.0",
- "image": "/img/blogposts/Dashboarding-with-JupyterLab-3-0.gif",
- "summary": "Project Jupyter offers a complete suite of open-source tools for the scientific computing community, reaching from the exploratory phase of a project to the presentation of the results. In this last…",
- "date": "January 8th, 2021",
- "authors": "Carlos Herrero, Jeremy Tuloup",
- "imageID": "blogpost-image-59",
- "imageNaturalWidth": 1918,
- "imageNaturalHeight": 968,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 137.78102189781023
- },
- {
- "url": "https://blog.jupyter.org/jupyterlab-3-0-is-out-4f58385e25bb",
- "title": "JupyterLab 3.0 is Released!",
- "image": "/img/blogposts/JupyterLab-3-0-is-Released.png",
- "summary": "The 3.0 release of JupyterLab brings many new features to users and substantial improvements to the extension distribution system.",
- "date": "January 5th, 2021",
- "authors": "Jeremy Tuloup",
- "imageID": "blogpost-image-58",
- "imageNaturalWidth": 1000,
- "imageNaturalHeight": 750,
- "imageRenderedWidth": 240,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://blog.llvm.org/posts/2020-12-21-interactive-cpp-for-data-science/",
- "title": "Interactive C++ for Data Science",
- "image": "/img/blogposts/Interactive-C++-for-Data-Science.png",
- "summary": "This post will discuss some applications of Cling developed to support data science researchers. In particular, interactively probing data and interfaces makes complex libraries and complex data more accessible users.",
- "date": "Dec 23, 2020",
- "authors": "Vassil Vassilev, David Lange, Simeon Ehrig, Sylvain Corlay",
- "imageID": "blogpost-image-57",
- "imageNaturalWidth": 1000,
- "imageNaturalHeight": 599,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 163.52700000000002
- },
- {
- "url": "https://david-brochart.medium.com/xtensor-%EF%B8%8F-zarr-4f5cf25c65e5",
- "title": "Xtensor ❤️ Zarr",
- "image": "/img/blogposts/Xtensor-Zarr.png",
- "summary": "A C++ implementation of the Zarr specification…",
- "date": "Dec 15, 2020",
- "authors": "David Brochart",
- "imageID": "blogpost-image-56",
- "imageNaturalWidth": 2160,
- "imageNaturalHeight": 949,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 119.94305555555555
- },
- {
- "url": "https://blog.jupyter.org/a-c-backend-for-vega-lite-bd2524b247c2",
- "title": "A C++ API for Vega-Lite",
- "image": "/img/blogposts/A-C++-API-for-Vega-Lite.png",
- "summary": "In this post, we present the first public release of XVega, a C++ library for producing Vega-Lite charts. Data science workflows differ from traditional software development in that engineers make…",
- "date": "Dec 2, 2020",
- "authors": "Madhur Tandon",
- "imageID": "blogpost-image-55",
- "imageNaturalWidth": 700,
- "imageNaturalHeight": 567,
- "imageRenderedWidth": 222.2222222222222,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://blog.jupyter.org/ipygany-jupyter-into-the-third-dimension-29a97597fc33",
- "title": "Ipygany, Jupyter into the Third Dimension",
- "image": "/img/blogposts/Ipygany-Jupyter-into-the-Third-Dimension.png",
- "summary": "From Paraview to Mayavi, there are multiple solutions for data analysis on 3D meshes on the desktop. Most of these tools provide high-level APIs that can be driven with a scripting language like…",
- "date": "Oct 14, 2020",
- "authors": "Martin Renou",
- "imageID": "blogpost-image-54",
- "imageNaturalWidth": 1000,
- "imageNaturalHeight": 710,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 193.83
- },
- {
- "url": "https://medium.com/@mari_meir/rhumba-a-faster-r-distribution-d619fb93043a",
- "title": "Rhumba, a Faster R Distribution",
- "image": "/img/blogposts/Rhumba-a-Faster-R-Distribution.gif",
- "summary": "CRAN is the official package manager for the R ecosystem. Unfortunately, simple operations such as creating new environments or installing packages with it can be very time-consuming due to the fact…",
- "date": "Oct 13, 2020",
- "authors": "Mariana Meireles",
- "imageID": "blogpost-image-53",
- "imageNaturalWidth": 990,
- "imageNaturalHeight": 779,
- "imageRenderedWidth": 228.7548138639281,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://blog.jupyter.org/the-templating-system-of-nbconvert-6-47ea781eacd2",
- "title": "The Templating System of Nbconvert 6",
- "image": "/img/blogposts/The-Templating-System-of-Nbconvert-6.png",
- "summary": "One of the main changes in nbconvert 6 is the refactor of the template system, which should be easier to extend and build upon. In this article, we dive into the template system, and provide a…",
- "date": "Sep 26, 2020",
- "authors": "Sylvain Corlay",
- "imageID": "blogpost-image-52",
- "imageNaturalWidth": 1200,
- "imageNaturalHeight": 950,
- "imageRenderedWidth": 227.36842105263156,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://medium.com/@mari_meir/memestra-a21c0c1f362",
- "title": "Memestra!",
- "image": "/img/blogposts/Memestra.png",
- "summary": "Modern IDE features such as interactive debugging, linting, code formatting, and refactoring tools are now available in JupyterLab, thanks to the JupyterLab-LSP extension and the recent release of…",
- "date": "Sep 21, 2020",
- "authors": "Mariana Meireles",
- "imageID": "blogpost-image-51",
- "imageNaturalWidth": 1200,
- "imageNaturalHeight": 730,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 166.07500000000002
- },
- {
- "url": "https://medium.com/@martinRenou/real-time-rendering-of-water-caustics-59cda1d74aa",
- "title": "Real-time Rendering of Water Caustics",
- "image": "/img/blogposts/Real-time-Rendering-of-Water-Caustics.png",
- "summary": "In this article, I present an attempt for generalizing caustics computation in real-time using WebGL and ThreeJS. The fact that it is an attempt is important, finding a solution that works well in…",
- "date": "Aug 27, 2020",
- "authors": "Martin Renou",
- "imageID": "blogpost-image-50",
- "imageNaturalWidth": 875,
- "imageNaturalHeight": 658,
- "imageRenderedWidth": 239.36170212765958,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://blog.jupyter.org/jupyterlab-ros-3dc9dab7f421",
- "title": "JupyterLab, the Cloud Robotics Command Station",
- "image": "/img/blogposts/JupyterLab-the-Cloud-Robotics-Command-Station.png",
- "summary": "Building the next generation of robotics cloud computing using ROS and JupyterLab",
- "date": "Aug 11, 2020",
- "authors": "Carlos Herrero, Wolf Vollprecht",
- "imageID": "blogpost-image-49",
- "imageNaturalWidth": 2560,
- "imageNaturalHeight": 1330,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 141.83203125
- },
- {
- "url": "https://blog.jupyter.org/slicerjupyter-a-3d-slicer-kernel-for-interactive-publications-6f2ad829f635",
- "title": "SlicerJupyter, a 3-D Slicer Kernel for Interactive Publications",
- "image": "/img/blogposts/SlicerJupyter-a-3-D-Slicer-Kernel-for-Interactive-Publications.png",
- "summary": "Use Jupyter and 3D Slicer kernel to implement biomedical data processing workflows in a notebook.",
- "date": "Jul 8, 2020",
- "authors": "Sylvain Corlay, Jean-Christophe Fillion-Robin, Mike Grauer, Andras Lasso, Matt MacCormick, Isaiah Norton, Steve Pieper, Martin Renou, Mike Sarahan",
- "imageID": "blogpost-image-48",
- "imageNaturalWidth": 256,
- "imageNaturalHeight": 256,
- "imageRenderedWidth": 180,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://medium.com/@QuantStack/open-software-packaging-for-science-61cecee7fc23",
- "title": "Open Software Packaging for Science",
- "image": "/img/blogposts/Open-Software-Packaging-for-Science.svg",
- "summary": "Modern scientific applications typically depend on a very large number of libraries written in various programming languages, ranging from Fortran to TypeScript, C, C++, Python, etc. So, we need to…",
- "date": "Jun 19, 2020",
- "authors": "Wolf Vollprecht, Mario Buikhuizen, Marianne Corvellec, Johan Mabille, David Brochart",
- "imageID": "blogpost-image-47",
- "imageNaturalWidth": 684,
- "imageNaturalHeight": 526,
- "imageRenderedWidth": 234.0684410646388,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://blog.jupyter.org/a-jupyter-kernel-for-sqlite-9549c5dcf551",
- "title": "A Jupyter Kernel for SQLite",
- "image": "/img/blogposts/A-Jupyter-Kernel-for-SQLite.png",
- "summary": "While it is well known in the Python scientific computing community, Jupyter is in fact a language-agnostic development environment. High-quality language kernels exist for the main languages of data…",
- "date": "Jun 11, 2020",
- "authors": "Mariana Meireles",
- "imageID": "blogpost-image-46",
- "imageNaturalWidth": 453,
- "imageNaturalHeight": 267,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 160.90728476821192
- },
- {
- "url": "https://blog.jupyter.org/plasma-a-learning-platform-powered-by-jupyter-1b850fcd8624",
- "title": "PLASMA, a Learning Platform Powered by Jupyter",
- "image": "/img/blogposts/PLASMA-a-Learning-Platform-Powered-by-Jupyter.png",
- "summary": "Jupyter has been a great choice for education for many years. The Jupyter Notebook has become one of the most popular tools to conduct workshops, tutorials, and teach online classes. Recently we have…",
- "date": "May 11, 2020",
- "authors": "Jeremy Tuloup",
- "imageID": "blogpost-image-45",
- "imageNaturalWidth": 933,
- "imageNaturalHeight": 212,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 62.032154340836016
- },
- {
- "url": "https://blog.jupyter.org/interactive-graph-visualization-in-jupyter-with-ipycytoscape-a8828a54ab63",
- "title": "Interactive Graph Visualization in Jupyter with IPycytoscape",
- "image": "/img/blogposts/Interactive-Graph-Visualization-in-Jupyter-with-IPycytoscape.png",
- "summary": "The Jupyter widgets ecosystem offers a broad variety of data visualization tools for exploratory analysis in the notebook. However, we…",
- "date": "Apr 30, 2020",
- "authors": "Mariana Meireles",
- "imageID": "blogpost-image-44",
- "imageNaturalWidth": 933,
- "imageNaturalHeight": 911,
- "imageRenderedWidth": 184.34687156970364,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://blog.jupyter.org/a-visual-debugger-for-jupyter-914e61716559",
- "title": "A Visual Debugger for Jupyter",
- "image": "/img/blogposts/A-Visual-Debuger-for-Jupyter.gif",
- "summary": "Most of the progress made in software projects comes from incrementalism. The ability to quickly see the outcome of an execution and iterate has been one of the main reasons for the success of…",
- "date": "Mar 25, 2020",
- "authors": "Jeremy Tuloup, Borys Palka, Johan Mabille, Martin Renou, Afshin Darian, Sylvain Corlay",
- "imageID": "blogpost-image-43",
- "imageNaturalWidth": 1198,
- "imageNaturalHeight": 798,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 181.84808013355592
- },
- {
- "url": "https://blog.jupyter.org/report-on-the-jupyter-community-workshop-on-dashboarding-14f8ad9f3c0",
- "title": "Field Report on the Jupyter Community Workshop on Dashboarding",
- "image": "/img/blogposts/Field-Report-on-the-Jupyter-Community-Workshop-on-Dashboarding.png",
- "summary": "From June 3rd to June 6th 2019, thirty-five developers from the Jupyter community met in Paris for a four-day workshop on dashboarding with Project Jupyter. For four days, attendees worked full time…",
- "date": "Feb 14, 2020",
- "authors": "Sylvain Corlay",
- "imageID": "blogpost-image-42",
- "imageNaturalWidth": 933,
- "imageNaturalHeight": 700,
- "imageRenderedWidth": 239.91428571428574,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://medium.com/@wolfv/introducing-scikit-geometry-ae1dccaad5fd",
- "title": "Introducing Scikit-Geometry",
- "image": "/img/blogposts/Introducing-Scikit-Geometry.png",
- "summary": "As a robotics researcher (but also in many other fields) computations on geometric primitives are used very frequently— but it’s harder than anticipated to find the right abstractions in a nice…",
- "date": "Jan 24, 2020",
- "authors": "Wolf Vollprecht",
- "imageID": "blogpost-image-41",
- "imageNaturalWidth": 1260,
- "imageNaturalHeight": 466,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 100.96666666666667
- },
- {
- "url": "https://medium.com/@johan.mabille/how-we-wrote-xtensor-8-n-iterators-7df77e3223f7",
- "title": "How we Wrote Xtensor (Episode 8) - Iterators",
- "image": "/img/blogposts/How-we-Wrote-Xtensor-Episode-8-Iterators.png",
- "summary": "In the previous article, we implemented the broadcasting rules so that we can compute the shape of arbitrary complex trees that involve arrays with different but compatible shapes. This is the first…",
- "date": "Jan 7, 2020",
- "authors": "Johan Mabille",
- "imageID": "blogpost-image-40",
- "imageNaturalWidth": 1232,
- "imageNaturalHeight": 260,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 57.61363636363636
- },
- {
- "url": "https://medium.com/@wolfv/2019-in-review-d7d03fb0d17d",
- "title": "2019 in Review",
- "image": "/img/blogposts/2019-in-Review.png",
- "summary": "This year has seen major changes in xeus and xeus-python, driven by the requirements for developing a visual debugger. We have implemented a prototype that supports the Debug Adapter Protocol from…",
- "date": "Jan 2, 2020",
- "authors": "Wolf Vollprecht",
- "imageID": "blogpost-image-39",
- "imageNaturalWidth": 2000,
- "imageNaturalHeight": 909,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 124.07849999999999
- },
- {
- "url": "https://medium.com/@wolfv/robot-development-with-jupyter-ddae16d4e688",
- "title": "Robot Development with Jupyter",
- "image": "/img/blogposts/Robot-Development-with-Jupyter.png",
- "summary": "Jupyter and Voilà are two popular packages in the data science ecosystem. But the Jupyter plugins jupyter-ros and jupyter-amphion make them more interesting than ever for robotics applications. This…",
- "date": "Dec 31, 2019",
- "authors": "Wolf Vollprecht",
- "imageID": "blogpost-image-38",
- "imageNaturalWidth": 870,
- "imageNaturalHeight": 551,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 172.9
- },
- {
- "url": "https://medium.com/@johan.mabille/how-we-wrote-xtensor-7-n-broadcasting-cf37a974d029",
- "title": "How we Wrote Xtensor (Episode 7) - Broadcasting",
- "image": "/img/blogposts/How-we-Wrote-Xtensor-Episode-7-Broadcasting.png",
- "summary": "In the previous article, we implemented operator and mathematical function overloads so that we can build arbitrary complex expression trees and access their elements. Before we can assign an…",
- "date": "Nov 24, 2019",
- "authors": "Johan Mabille",
- "imageID": "blogpost-image-37",
- "imageNaturalWidth": 1232,
- "imageNaturalHeight": 260,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 57.61363636363636
- },
- {
- "url": "https://blog.jupyter.org/voila-gridstack-template-8a431c2b353e",
- "title": "Configure your Dashboards with the Voilà Gridstack Template",
- "image": "/img/blogposts/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.gif",
- "summary": "Voilà is a new dashboarding solution from Jupyter ecosystem. It provides an easy-to-use tool to convert your Jupyter notebooks into standalone web applications. If you have not used it before, you…",
- "date": "Nov 11, 2019",
- "authors": "Bartosz Telenczuk",
- "imageID": "blogpost-image-36",
- "imageNaturalWidth": 931,
- "imageNaturalHeight": 512,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 150.13533834586465
- },
- {
- "url": "https://blog.jupyter.org/a-slideshow-template-for-voil%C3%A0-apps-435f67d10b4f",
- "title": "A Slideshow template for Voilà",
- "image": "/img/blogposts/A-Slideshow-template-for-Voila.png",
- "summary": "Last June, QuantStack announced the first release of Voilà, a solution to turn Jupyter notebooks into standalone web applications. Voilà enforces security (preventing arbitrary code execution) while…",
- "date": "Oct 29, 2019",
- "authors": "Marianne Corvellec",
- "imageID": "blogpost-image-35",
- "imageNaturalWidth": 384,
- "imageNaturalHeight": 159,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 113.0390625
- },
- {
- "url": "https://medium.com/@wolfv/ros-on-conda-forge-dca6827ac4b6",
- "title": "ROS on Conda-forge",
- "image": "/img/blogposts/ROS-on-Conda-forge.png",
- "summary": "ROS is a fantastic and very large suite of software tools for Robotics. It’s used in many applications and with great success, ranging from the hobbyist market to industrial use cases. Most people…",
- "date": "Oct 28, 2019",
- "authors": "Wolf Vollprecht",
- "imageID": "blogpost-image-34",
- "imageNaturalWidth": 1260,
- "imageNaturalHeight": 833,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 180.48333333333335
- },
- {
- "url": "https://blog.jupyter.org/ipycanvas-a-python-canvas-for-jupyter-bbb51e4777f7",
- "title": "IPycanvas, a Python Canvas for Jupyter",
- "image": "/img/blogposts/IPycanvas-a-Python-Canvas-for-Jupyter.png",
- "summary": "As you may already know, the Jupyter Notebook and JupyterLab are Browser-based applications. Browsers are incredibly powerful, they allow you to swap rich and interactive graphical interfaces…",
- "date": "Oct 25, 2019",
- "authors": "Martin Renou",
- "imageID": "blogpost-image-33",
- "imageNaturalWidth": 933,
- "imageNaturalHeight": 621,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 181.7073954983923
- },
- {
- "url": "https://blog.jupyter.org/field-report-on-the-kernel-community-workshop-a4ad73a1a718",
- "title": "Field Report on the Kernel Community Workshop",
- "image": "/img/blogposts/Field-Report-on-the-Kernel-Community-Workshop.png",
- "summary": "From May 27th to May 29th, thirty developers from the Jupyter community met in Paris for a three-days workshop on the Jupyter kernel…",
- "date": "Oct 7, 2019",
- "authors": "Sylvain Corlay",
- "imageID": "blogpost-image-32",
- "imageNaturalWidth": 933,
- "imageNaturalHeight": 700,
- "imageRenderedWidth": 239.91428571428574,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://medium.com/@johan.mabille/how-we-wrote-xtensor-6-n-operator-overloading-984c2e5b4171",
- "title": "How we Wrote Xtensor (Episode 6) - Operator Overloading",
- "image": "/img/blogposts/How-we-Wrote-Xtensor-Episode-6-Operator-Overloading.png",
- "summary": "In the previous article, we introduced expression templates and developed the skeleton of the xfunction class, meant to represent a node of the abstract syntax tree of a tensor expression. We left…",
- "date": "Sep 25, 2019",
- "authors": "Johan Mabille",
- "imageID": "blogpost-image-31",
- "imageNaturalWidth": 1232,
- "imageNaturalHeight": 260,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 57.61363636363636
- },
- {
- "url": "https://blog.jupyter.org/interactive-gis-in-jupyter-with-ipyleaflet-52f9657fa7a",
- "title": "Interactive GIS in Jupyter with IPyleaflet",
- "image": "/img/blogposts/Interactive-GIS-in-Jupyter-with-IPyleaflet.gif",
- "summary": "As Jupyter grew in popularity, a broad ecosystem of visualization packages based on Jupyter widgets has been developed, bringing even more interactivity to the Jupyter world. In this article, we dive…",
- "date": "Sep 25, 2019",
- "authors": "Sylvain Corlay, Martin Renou",
- "imageID": "blogpost-image-30",
- "imageNaturalWidth": 500,
- "imageNaturalHeight": 500,
- "imageRenderedWidth": 180,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://medium.com/@johan.mabille/how-we-wrote-xtensor-5-n-expression-templates-d07332e73d1d",
- "title": "How we Wrote Xtensor (Episode 5) - Expression Templates",
- "image": "/img/blogposts/How-we-Wrote-Xtensor-Episode-5-Expression-Templates.png",
- "summary": "In the previous articles, we started to implement an N-D container, xarray, which has value semantics and provides all the methods required to access its data. The next step is to give it computation…",
- "date": "Sep 5, 2019",
- "authors": "Johan Mabille",
- "imageID": "blogpost-image-29",
- "imageNaturalWidth": 281,
- "imageNaturalHeight": 221,
- "imageRenderedWidth": 228.86877828054298,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://blog.jupyter.org/building-a-calculator-jupyter-kernel-4aed5764a295",
- "title": "Building a Calculator Jupyter Kernel",
- "image": "/img/blogposts/Building-a-Calculator-Jupyter-Kernel.png",
- "summary": "In order to provide a language-agnostic scientific development environment, the Jupyter project is built upon a well-specified protocol to communicate with the Kernel, the part of the infrastructure…",
- "date": "Jul 16, 2019",
- "authors": "Vasavan Thiru, Thibault Lacharme",
- "imageID": "blogpost-image-28",
- "imageNaturalWidth": 933,
- "imageNaturalHeight": 622,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 182
- },
- {
- "url": "https://medium.com/@johan.mabille/how-we-wrote-xtensor-4-n-value-semantics-6baa6856d313",
- "title": "How we Wrote Xtensor (Episode 4) - Value Semantics",
- "image": "/img/blogposts/How-we-Wrote-Xtensor-Episode-4-Value-Semantics.png",
- "summary": "xtensor is a comprehensive framework for N-D arrays processing, including an extensible expression system, lazy evaluation, and many other…",
- "date": "Jul 16, 2019",
- "authors": "Johan Mabille",
- "imageID": "blogpost-image-27",
- "imageNaturalWidth": 1388,
- "imageNaturalHeight": 293,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 57.62896253602305
- },
- {
- "url": "https://blog.jupyter.org/introducing-templates-for-jupyter-widget-layouts-f72bcb35a662",
- "title": "Introducing Templates for Jupyter Widget Layouts",
- "image": "/img/blogposts/Introducing-Templates-for-Jupyter-Widget-Layouts.png",
- "summary": "Notebooks come alive with Jupyter widgets, which allow users to produce interactive GUIs inline in the Jupyter notebook or JupyterLab. You can either use them to add a few interactive controls and…",
- "date": "Jul 4, 2019",
- "authors": "Bartosz Telenczuk",
- "imageID": "blogpost-image-26",
- "imageNaturalWidth": 933,
- "imageNaturalHeight": 746,
- "imageRenderedWidth": 225.1206434316354,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://medium.com/@johan.mabille/how-we-wrote-xtensor-3-n-the-constructors-65a177260638",
- "title": "How we Wrote Xtensor (Episode 3) - The Constructors",
- "image": "/img/blogposts/How-we-Wrote-Xtensor-Episode-3-The-Constructors.png",
- "summary": "In the previous article, we detailed the implementation of a generic access operator for our N-D container. Two more things to implement before the xarray class can be used in practice are…",
- "date": "Jun 24, 2019",
- "authors": "Johan Mabille",
- "imageID": "blogpost-image-25",
- "imageNaturalWidth": 1388,
- "imageNaturalHeight": 293,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 57.62896253602305
- },
- {
- "url": "https://medium.com/@johan.mabille/how-we-wrote-xtensor-2-n-access-operators-57e8e3852263",
- "title": "How we Wrote Xtensor (Episode 2) - Access Operators",
- "image": "/img/blogposts/How-we-Wrote-Xtensor-Episode-2-Access-Operators.png",
- "summary": "In the previous article, we started to design an N-dimensional container. We detailed the implementation of methods related to shape, strides, and memory layout. Let us now get to the access…",
- "date": "Jun 20, 2019",
- "authors": "Johan Mabille",
- "imageID": "blogpost-image-24",
- "imageNaturalWidth": 1388,
- "imageNaturalHeight": 293,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 57.62896253602305
- },
- {
- "url": "https://medium.com/@johan.mabille/how-we-wrote-xtensor-1-n-n-dimensional-containers-f79f9f4966a7",
- "title": "How we Wrote Xtensor (Episode 1) - N-Dimensional Containers",
- "image": "/img/blogposts/How-we-Wrote-Xtensor-Episode-1-N-Dimensional-Containers.png",
- "summary": "xtensor is a C++ library meant for numerical analysis with multi-dimensional array expressions. It exposes an API similar to that of NumPy…",
- "date": "Jun 17, 2019",
- "authors": "Johan Mabille",
- "imageID": "blogpost-image-23",
- "imageNaturalWidth": 900,
- "imageNaturalHeight": 190,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 57.63333333333334
- },
- {
- "url": "https://blog.jupyter.org/and-voil%C3%A0-f6a2c08a4a93",
- "title": "And Voilà!",
- "image": "/img/blogposts/And-Voila.png",
- "summary": "The goal of Project Jupyter is to improve the workflows of researchers, educators, scientists, and other practitioners of scientific computing, from the exploratory phase of their work to the…",
- "date": "Jun 11, 2019",
- "authors": "Sylvain Corlay, Maarten Breddels",
- "imageID": "blogpost-image-22",
- "imageNaturalWidth": 933,
- "imageNaturalHeight": 576,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 168.540192926045
- },
- {
- "url": "https://medium.com/@wolfv/mamba-development-news-29e32aaa8d6c",
- "title": "Mamba Development News",
- "image": "/img/blogposts/Mamba-Development-News.png",
- "summary": "Mamba is a drop-in replacement for conda, the awesome cross-platform package manager. In our opinion, conda has one tiny problem: it’s too slow when many packages are installed, or when installing…",
- "date": "Jun 10, 2019",
- "authors": "Wolf Vollprecht",
- "imageID": "blogpost-image-21",
- "imageNaturalWidth": 1800,
- "imageNaturalHeight": 1243,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 188.52166666666668
- },
- {
- "url": "https://medium.com/@wolfv/building-an-open-source-continuous-benchmark-system-717839093962",
- "title": "Building an Open-Source Continuous Benchmark System",
- "image": "/img/blogposts/Building-an-Open-Source-Continuous-Benchmark-System.png",
- "summary": "Concourse is a continuous integration software, and we use it for two purposes: multi-project continuous integration, and continuous benchmarking. It’s easy to setup on a low cost server, using…",
- "date": "May 29, 2019",
- "authors": "Wolf Vollprecht",
- "imageID": "blogpost-image-20",
- "imageNaturalWidth": 2048,
- "imageNaturalHeight": 558,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 74.3818359375
- },
- {
- "url": "https://blog.jupyter.org/ros-jupyter-b7e82b5e1202",
- "title": "ROS @ Jupyter",
- "image": "/img/blogposts/ROS-@-Jupyter.png",
- "summary": "Historically, the ROS (Robot Operating System) community has relied on Qt for building complex user interfaces. Nowadays, the Jupyter notebook and the ipywidgets framework offer a compelling…",
- "date": "Apr 7, 2019",
- "authors": "Wolf Vollprecht",
- "imageID": "blogpost-image-19",
- "imageNaturalWidth": 933,
- "imageNaturalHeight": 560,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 163.85852090032154
- },
- {
- "url": "https://medium.com/@wolfv/making-conda-fast-again-4da4debfb3b7",
- "title": "Making Conda Fast Again",
- "image": "/img/blogposts/Making-Conda-Fast-Again.png",
- "summary": "You might have seen the announcement on Twitter: at QuantStack we’ve been working on making a prototype of a conda-compatible package manager called mamba. Conda is a great tool to distribute data…",
- "date": "Mar 28, 2019",
- "authors": "Wolf Vollprecht",
- "imageID": "blogpost-image-18",
- "imageNaturalWidth": 960,
- "imageNaturalHeight": 377,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 107.20937500000001
- },
- {
- "url": "https://towardsdatascience.com/interactive-spreadsheets-in-jupyter-32ab6ec0f4ff",
- "title": "Interactive spreadsheets in Jupyter",
- "image": "/img/blogposts/Interactive-spreadsheets-in-Jupyter.png",
- "summary": "ipysheet is a new interactive widgets library that aims at implementing the core features of a good spreadsheet application and more…",
- "date": "Mar 8, 2019",
- "authors": "Martin Renou",
- "imageID": "blogpost-image-17",
- "imageNaturalWidth": 1661,
- "imageNaturalHeight": 1084,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 178.1649608669476
- },
- {
- "url": "https://blog.jupyter.org/a-new-python-kernel-for-jupyter-fcdf211e30a8",
- "title": "A New Python Kernel for Jupyter",
- "image": "/img/blogposts/A-New-Python-Kernel-for-Jupyter.png",
- "summary": "Project Jupyter aims at providing a consistent set of tools for interactive computing workflows across multiple programming languages. Jupyter projects are popular at all stages of a research project…",
- "date": "Jan 9, 2019",
- "authors": "Martin Renou",
- "imageID": "blogpost-image-16",
- "imageNaturalWidth": 453,
- "imageNaturalHeight": 227,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 136.80132450331126
- },
- {
- "url": "https://medium.com/@johan.mabille/xframe-towards-a-c-dataframe-26e1ccde211b",
- "title": "Xframe: Towards a C++ Dataframe",
- "image": "/img/blogposts/Xframe-Towards-a-C++-Dataframe.png",
- "summary": "For a very long time, the C++ programming language lacked a high-level toolset for scientific computing. Data structures such as N-dimensional arrays, data frames, are the bread and butter of the R…",
- "date": "Jan 4, 2019",
- "authors": "Johan Mabille",
- "imageID": "blogpost-image-15",
- "imageNaturalWidth": 1260,
- "imageNaturalHeight": 375,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 81.25
- },
- {
- "url": "https://medium.com/@johan.mabille/designing-language-bindings-with-xtensor-f32aa0f20db",
- "title": "Designing Language Bindings with Xtensor",
- "image": "/img/blogposts/Designing-Language-Bindings-with-Xtensor.svg",
- "summary": "xtensor and its satellite projects make it easy to implement a feature once in C++ and expose it to the main languages of data science, such as Python, Julia and R with little extra work. Although…",
- "date": "Nov 30, 2018",
- "authors": "Johan Mabille",
- "imageID": "blogpost-image-14",
- "imageNaturalWidth": 710,
- "imageNaturalHeight": 150,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 57.67605633802817
- },
- {
- "url": "https://towardsdatascience.com/video-streaming-in-the-jupyter-notebook-635bc5809e85",
- "title": "Video Streaming in the Jupyter Notebook",
- "image": "/img/blogposts/Video-Streaming-in-the-Jupyter-Notebook.gif",
- "summary": "ipywidgets plays an essential part in the Jupyter ecosystem; it brings interactivity between user and data. Widgets are eventful Python objects that often have a visual representation in the Jupyter…",
- "date": "Nov 19, 2018",
- "authors": "Martin Renou",
- "imageID": "blogpost-image-13",
- "imageNaturalWidth": 1131,
- "imageNaturalHeight": 683,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 164.86206896551724
- },
- {
- "url": "https://towardsdatascience.com/the-xtensor-vision-552dd978e9ad",
- "title": "The Xtensor Vision",
- "image": "/img/blogposts/The-Xtensor-Vision.png",
- "summary": "Here we’re laying out a vision for the xtensor project, the n-dimensional array in the C++ language — that makes it easy to write high-performance code and bind it to the languages of data science…",
- "date": "Nov 10, 2018",
- "authors": "Wolf Vollprecht",
- "imageID": "blogpost-image-12",
- "imageNaturalWidth": 1600,
- "imageNaturalHeight": 551,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 94.014375
- },
- {
- "url": "https://serge-sans-paille.github.io/pythran-stories/bye-bye-boostsimd-welcome-xsimd.html",
- "title": "Bye bye Boost.SIMD, Welcome XSimd",
- "image": "/img/blogposts/Bye-bye-Boost-SIMD-Welcome-XSimd.svg",
- "summary": "Boost.simd provides a C++ abstraction of vector type, allowing for efficient vectorization of array computations. It has been (optionally) used as part of the expression template engine of Pythran for a long time, a great collaboration that led to several patches in boost.simd, and great performance for Pythran.",
- "date": "Oct 31, 2019",
- "authors": "Serge Guelton",
- "imageID": "blogpost-image-11",
- "imageNaturalWidth": 555,
- "imageNaturalHeight": 168,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 82.63783783783784
- },
- {
- "url": "https://medium.com/@QuantStack/xtensor-c-and-the-julia-challenge-643d4b119761",
- "title": "Xtensor, C++, and the Julia Challenge",
- "image": "/img/blogposts/Xtensor-C++-and-the-Julia-Challenge.png",
- "summary": "Last month, Simon Danisch launched the Julia Language Challenge, a programming challenge from a member of the Julia community to other programming languages. with high performances. This can be…",
- "date": "Oct 24, 2018",
- "authors": "Sylvain Corlay, Johan Mabille, Wolf Vollprecht",
- "imageID": "blogpost-image-10",
- "imageNaturalWidth": 810,
- "imageNaturalHeight": 170,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 57.2962962962963
- },
- {
- "url": "https://medium.com/@wolfv/the-julia-challenge-in-c-21272d36c002",
- "title": "The Julia Challenge in C++",
- "image": "/img/blogposts/The-Julia-Challenge-in-C++.png",
- "summary": "Recently, some folks of the Julia community were boasting about the expressiveness of the Julia programming language, compared to older languages. That’s how they started the Julia Challenge. The…",
- "date": "Oct 12, 2018",
- "authors": "Wolf Vollprecht",
- "imageID": "blogpost-image-9",
- "imageNaturalWidth": 320,
- "imageNaturalHeight": 200,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 170.625
- },
- {
- "url": "https://blog.jupyter.org/interpreted-c-for-gis-with-jupyter-ae191bc6fb8e",
- "title": "Interpreter C++ for GIS with Jupyter",
- "image": "/img/blogposts/Interpreter-C++-for-GIS-with-Jupyter.png",
- "summary": "The recent release of the Jupyter kernel for C++, based on the Cling interpreter enabled a number of new workflows for the users of the C++ programming language. More than a limited set of base…",
- "date": "Apr 24, 2018",
- "authors": "Martin Renou",
- "imageID": "blogpost-image-8",
- "imageNaturalWidth": 933,
- "imageNaturalHeight": 662,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 193.70418006430867
- },
- {
- "url": "https://blog.jupyter.org/authoring-custom-jupyter-widgets-2884a462e724",
- "title": "Authoring Custom Jupyter Widgets",
- "image": "/img/blogposts/Authoring-Custom-Jupyter-Widgets.gif",
- "summary": "Jupyter interactive widgets enhance the notebook experience by allowing users to create graphical user interfaces. They enable richer interaction with the data and computing resources. While the base…",
- "date": "Mar 5, 2018",
- "authors": "Olivier Borderies, Olivier Coudray, Pierre Marion",
- "imageID": "blogpost-image-7",
- "imageNaturalWidth": 1196,
- "imageNaturalHeight": 648,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 147.91304347826087
- },
- {
- "url": "https://blog.jupyter.org/jupyter-receives-the-acm-software-system-award-d433b0dfe3a2",
- "title": "Jupyter Receives the ACM Software System Award",
- "image": "/img/blogposts/Jupyter-Receives-the-ACM-Software-System-Award.png",
- "summary": "It is our pleasure to announce that Project Jupyter has been awarded the 2017 ACM Software System Award, a significant honor for the project. We are humbled to join an illustrious list of projects…",
- "date": "Mar 2, 2018",
- "authors": "Project Jupyter",
- "imageID": "blogpost-image-6",
- "imageNaturalWidth": 1089,
- "imageNaturalHeight": 280,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 70.19283746556474
- },
- {
- "url": "https://blog.jupyter.org/a-diagram-editor-for-jupyterlab-a254121ff919",
- "title": "A Diagram Editor for JupyterLab",
- "image": "/img/blogposts/A-Diagram-Editor-for-JupyterLab.gif",
- "summary": "The new JupyterLab interface is much more than a replacement for the classic notebook. It aims to bring together all the pieces required for a complete scientific workflow. The extension-based…",
- "date": "Feb 26, 2018",
- "authors": "Wolf Vollprecht",
- "imageID": "blogpost-image-5",
- "imageNaturalWidth": 1000,
- "imageNaturalHeight": 600,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 163.79999999999998
- },
- {
- "url": "https://medium.com/@wolfv/fast-reductions-in-xtensor-with-simd-212a8543960a",
- "title": "Fast Reductions in Xtensor with Xsimd",
- "image": "/img/blogposts/Fast-Reductions-in-Xtensor-with-Xsimd.png",
- "summary": "xtensor has a wealth of mathematical functions available already: we support a lot of the NumPy API right there in C++. One of the areas where we were a bit slower than NumPy in the past were…",
- "date": "Feb 20, 2018",
- "authors": "Wolf Vollprecht",
- "imageID": "blogpost-image-4",
- "imageNaturalWidth": 1260,
- "imageNaturalHeight": 665,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 144.08333333333334
- },
- {
- "url": "https://medium.com/@wolfv/faster-xtensor-87fcbe7f5293",
- "title": "Faster Xtensor",
- "image": "/img/blogposts/Faster-Xtensor.png",
- "summary": "Knowing the size of the memory that is to be allocated at compile time can improve the runtime performance a lot — the compiler can already reserve the required space on the stack (instead of having…",
- "date": "Feb 18, 2018",
- "authors": "Wolf Vollprecht",
- "imageID": "blogpost-image-3",
- "imageNaturalWidth": 1260,
- "imageNaturalHeight": 995,
- "imageRenderedWidth": 227.9396984924623,
- "imageRenderedHeight": 180
- },
- {
- "url": "https://blog.jupyter.org/interactive-workflows-for-c-with-jupyter-fe9b54227d92",
- "title": "Interactive Workflows for C++ with Jupyter",
- "image": "/img/blogposts/Interactive-Workflows-for-C++-with-Jupyter.png",
- "summary": "Scientists, educators and engineers not only use programming languages to build software systems, but also in interactive workflows, using the tools available to explore a problem and reason about…",
- "date": "Nov 29, 2017",
- "authors": "Sylvain Corlay, Loic Gouarin, Johan Mabille, Wolf Vollprecht",
- "imageID": "blogpost-image-2",
- "imageNaturalWidth": 933,
- "imageNaturalHeight": 628,
- "imageRenderedWidth": 273,
- "imageRenderedHeight": 183.7556270096463
- },
- {
- "url": "https://medium.com/@SylvainCorlay/scientific-computing-in-a-polyglot-world-with-xtensor-d81ff3865d6",
- "title": "Scientific Computing in a Polyglot World with Xtensor",
- "image": "/img/blogposts/Scientific-Computing-in-a-Polyglot-World-with-Xtensor.png",
- "summary": "The One Language to Rule Them All probably does not exist yet. In the world of interactive scientific computing, countless articles and blog posts argue on the merits of R, Python, Julia and other…",
- "date": "May 5, 2017",
- "authors": "Sylvain Corlay",
- "imageID": "blogpost-image-1",
- "imageNaturalWidth": 300,
- "imageNaturalHeight": 300,
- "imageRenderedWidth": 180,
- "imageRenderedHeight": 180
- }
-]
diff --git a/src/components/blog/index.tsx b/src/components/blog/index.tsx
deleted file mode 100644
index 6dc19e87d..000000000
--- a/src/components/blog/index.tsx
+++ /dev/null
@@ -1,58 +0,0 @@
-import styles from "./styles.module.css";
-import React, { useState } from "react";
-import BlogpostCard from "./BlogpostCard";
-
-export default function BlogsComponent({ blogpostsDetails }) {
- const numberOfBlogs = blogpostsDetails.length;
- const [searchField, setSearchField] = useState("");
-
- const filteredBlogPosts = blogpostsDetails.filter((blogpost) => {
- return (
- blogpost.title.toLowerCase().includes(searchField.toLowerCase()) ||
- blogpost.authors.toLowerCase().includes(searchField.toLowerCase()) ||
- blogpost.date.toLowerCase().includes(searchField.toLowerCase()) ||
- blogpost.summary.toLowerCase().includes(searchField.toLowerCase())
- );
- });
-
- const handleChange = (event) => {
- setSearchField(event.target.value);
- };
-
- return (
-
-
-
-
-
- Featured Posts by QuantStack Contributors
-
-
-
-
-
-
-
-
- {filteredBlogPosts.map((blogpost, index) => (
-
-
-
-
-
- ))}
-
-
-
- );
-}
diff --git a/src/components/blog/resize.js b/src/components/blog/resize.js
deleted file mode 100644
index e2be94bfc..000000000
--- a/src/components/blog/resize.js
+++ /dev/null
@@ -1,16 +0,0 @@
-const Jimp = require("jimp");
-
-async function resize(inputPath, outputPath) {
- // Reading Image
- const image = await Jimp.read(inputPath);
- // Used RESIZE_BEZIER as cb for finer images
- image
- .resize(1024, 768, Jimp.RESIZE_BEZIER, function (err) {
- if (err) throw err;
- })
- .write(outputPath);
- }
-
- resize();
- console.log("Image is processed successfully");
-
\ No newline at end of file
diff --git a/src/components/blog/yml-to-json.js b/src/components/blog/yml-to-json.js
deleted file mode 100644
index be2d9aa05..000000000
--- a/src/components/blog/yml-to-json.js
+++ /dev/null
@@ -1,148 +0,0 @@
-const imagesDirectory = "../../../static/img/blogposts/";
-const yaml = require("js-yaml");
-const fs = require("fs");
-const https = require("https");
-const ymlFileName = "_config.yml";
-const jsonFileName = "blogpostsDetails";
-let yamlFile = fs.readFileSync(ymlFileName, "utf8");
-let obj = yaml.load(yamlFile);
-const blogpostsDetailsYml = obj["blog"];
-const NUMBER_OF_BLOGS = blogpostsDetailsYml.length;
-const sizeOf = require("image-size");
-const imageContainerDimensions = [273, 180];
-
-function JSONToFile(data, filename) {
- fs.writeFileSync(`${filename}.json`, JSON.stringify(data, null, 2));
-}
-
-function defineImagesNames(data) {
- const imageUrls = [];
- const imagePaths = [];
- let fileExtension = "";
- data.map((blogpost, index) => {
- imageUrls.push(blogpost.image);
-
- if (blogpost.image.includes(".png")) {
- fileExtension = ".png";
- } else if (blogpost.image.includes(".jpg" || ".jpeg")) {
- fileExtension = ".jpg";
- } else if (blogpost.image.includes(".webp")) {
- fileExtension = ".webp";
- } else if (blogpost.image.includes(".gif")) {
- fileExtension = ".gif";
- } else if (blogpost.image.includes(".svg")) {
- fileExtension = ".svg";
- }
- else {
- fileExtension = ".png";
- }
- let name = blogpost.title;
- name = name.split("!").join("");
- name = name.split(" - ").join("-");
- name = name.split(",").join("");
- name = name.split("🎉 ").join("");
- name = name.split(" 🎉").join("");
- name = name.split(" ❤️ ").join("-");
- name = name.split(": ").join("-");
- name = name.split(".").join("-");
- name = name.split("(").join("");
- name = name.split(")").join("");
- name = name.replace("à", "a");
- name = name.substring(0, 80).split(" ").join("-") + fileExtension;
- imagePaths.push(imagesDirectory + name);
- });
-
- return [imageUrls, imagePaths];
-}
-
-function downloadImage(url, filepath) {
- return new Promise((resolve, reject) => {
- const request = https.get(url, (res) => {
- const protocol = "https";
- const hostname = res.socket._host;
-
- if (res.statusCode === 200) {
- res
- .pipe(fs.createWriteStream(filepath))
- .on("error", reject)
- .once("close", () => resolve(filepath));
- } else if (res.statusCode === 301 && res.headers.location) {
- // Handle 301 redirect
- const newUrl = protocol + "://" + hostname + res.headers.location;
- // Close the current response and retry with the new URL
- res.resume();
- downloadImage(newUrl, filepath).then(resolve).catch(reject);
- } else {
- res.resume(); // Consume response data to free up memory
- reject(new Error(`Request failed with status code: ${res.statusCode}`));
- }
- });
- request.on("error", (err) => {
- reject(err);
- });
- });
-}
-
-function getImageDimensions(blogpost) {
- const pathPrefix = "../../../static";
- const completePath = pathPrefix + blogpost.image;
- const dimensions = sizeOf(completePath);
- return [dimensions.width, dimensions.height];
-}
-
-function changeBlogpostsDetails(
- blogpostsDetailsYml,
- paths,
- imageContainerDimensions
-) {
- const data = [...blogpostsDetailsYml];
-
- data.map((blogpost, index) => {
- const timeIndex = NUMBER_OF_BLOGS - index; /* starting at 1*/
-
- blogpost.imageID = "blogpost-image-" + timeIndex;
- blogpost.image = paths[index].replace("../../../static", "");
- const [width, height] = getImageDimensions(blogpost);
- blogpost.imageNaturalWidth = width;
- blogpost.imageNaturalHeight = height;
-
- const imageAspectRatio = width / height;
- const containerWidth = imageContainerDimensions[0];
- const containerHeight = imageContainerDimensions[1];
-
- if (imageAspectRatio <= 1.4) {
- blogpost.imageRenderedWidth = containerHeight * imageAspectRatio;
- blogpost.imageRenderedHeight = containerHeight;
- } else {
- blogpost.imageRenderedWidth = containerWidth;
- blogpost.imageRenderedHeight = containerWidth / imageAspectRatio;
- }
-
- if (timeIndex === 114) {
- blogpost.url = "/blogs/Fanny";
- }
- });
- return data;
-}
-
-function downloadLastImage(urls, paths) {
- downloadImage(urls[NUMBER_OF_BLOGS], paths[NUMBER_OF_BLOGS]);
-}
-
-/**step 1: load .yml file and convert data to an object called blogpostsDetails *********** */
-/**step 2: define path of images from the name of blog posts and their chronological index */
-const [urls, paths] = defineImagesNames(blogpostsDetailsYml);
-console.log(paths);
-/**step 3: download last image of last blogpost */
-//downloadLastImage(urls, paths);
-/** step 4: change the path to images in blogpostsDetails,
- * add their natural dimensions and the rendered ones********** */
-const modifiedBlogpostsDetails = changeBlogpostsDetails(
- blogpostsDetailsYml,
- paths,
- imageContainerDimensions
-);
-
-/** step 5: save modified blogposts details in a .json file
- * these data are the one used for building the react blogposts cards */
-JSONToFile(modifiedBlogpostsDetails, jsonFileName);
diff --git a/src/components/careers/Header.tsx b/src/components/careers/Header.tsx
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/components/careers/InterviewCard.tsx b/src/components/careers/InterviewCard.tsx
deleted file mode 100644
index b2a65f65d..000000000
--- a/src/components/careers/InterviewCard.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import styles from "./styles.module.css";
-import Link from "@docusaurus/Link";
-import InterviewPicture from "./InterviewPicture";
-import PlayCircle from "@site/static/img/icons/PlayCircle.svg";
-
-export default function InterviewCard({ person }) {
- return (
-
-
-
-
- {person.firstName}
-
-
{person.position}
-
-
- );
-}
diff --git a/src/components/careers/InterviewPicture.tsx b/src/components/careers/InterviewPicture.tsx
deleted file mode 100644
index 346ae47cd..000000000
--- a/src/components/careers/InterviewPicture.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import styles from "./styles.module.css";
-import PlayCircle from "@site/static/img/icons/PlayCircle.svg";
-
-export default function InterviewPicture({ person }) {
- return (
-
-
-
-
-
-
- );
-}
diff --git a/src/components/careers/Interviews.tsx b/src/components/careers/Interviews.tsx
deleted file mode 100644
index 6b3c33734..000000000
--- a/src/components/careers/Interviews.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import styles from "./styles.module.css";
-import InterviewCard from "./InterviewCard";
-
-export default function Interviews({ details, description }) {
- return (
-
-
{description}
-
-
- {details.map((person, index) => (
-
-
-
-
-
- ))}
-
-
-
- );
-}
diff --git a/src/components/careers/JoinTheTeam.tsx b/src/components/careers/JoinTheTeam.tsx
deleted file mode 100644
index cf4eed6ae..000000000
--- a/src/components/careers/JoinTheTeam.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import styles from "./styles.module.css";
-
-
-export default function JoinTheTeam() {
- return (
-
- QuantStack is seeking talents in the open-source scientific computing
- community. Join a team committed to open-science and free software.
-
- );
-}
\ No newline at end of file
diff --git a/src/components/careers/LinkToWTJ.tsx b/src/components/careers/LinkToWTJ.tsx
deleted file mode 100644
index 6c53e2c82..000000000
--- a/src/components/careers/LinkToWTJ.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-import styles from "./styles.module.css";
-import Link from "@docusaurus/Link";
-
-export default function LinkToWTJ({label}) {
- return (
-
-
- {label}
-
-
- );
-}
diff --git a/src/components/careers/VisitWTJProfile.tsx b/src/components/careers/VisitWTJProfile.tsx
deleted file mode 100644
index 2fdf1a938..000000000
--- a/src/components/careers/VisitWTJProfile.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import LinkToWTJ from "./LinkToWTJ";
-
-export default function VisitWTJProfile() {
- return (
-
- Learn more on our Welcome to the Jungle web page.
-
-
- );
-}
diff --git a/src/components/careers/index.tsx b/src/components/careers/index.tsx
deleted file mode 100644
index 09e00b3a3..000000000
--- a/src/components/careers/index.tsx
+++ /dev/null
@@ -1,62 +0,0 @@
-import styles from "./styles.module.css";
-import { interviewDetails } from "./interviewDetails";
-import Interviews from "./Interviews";
-import Header from "./Header";
-import VisitWTJProfile from "./VisitWTJProfile";
-import JoinTheTeam from "./JoinTheTeam";
-import GroupPhotoJupyterConUrl from "@site/static/img/group/group-photo.png";
-
-export default function Careers() {
- return (
-
-
-
-
-
-
Join the QuantStack team!
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/src/components/careers/interviewDetails.ts b/src/components/careers/interviewDetails.ts
deleted file mode 100644
index 51015d35e..000000000
--- a/src/components/careers/interviewDetails.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-import SylvainPictureurl from "@site/static/img/interviews/Sylvain_WTJ.png";
-import JohanPictureurl from "@site/static/img/interviews/Johan_WTJ.png";
-import MartinPictureurl from "@site/static/img/interviews/Martin_WTJ.png";
-import JeremyPictureurl from "@site/static/img/interviews/Jeremy_WTJ.png";
-import DarianPictureurl from "@site/static/img/interviews/Darian_WTJ.png";
-import DavidPictureurl from "@site/static/img/interviews/David_WTJ.png";
-import GabrielaPictureurl from "@site/static/img/interviews/Gabriela_WTJ.png";
-import TrungPictureurl from "@site/static/img/interviews/Trung_WTJ.png";
-
-export const interviewDetails = [
- {
- completeName: "Sylvain Corlay",
- firstName: "Sylvain",
- position: "CEO",
- pictureRoute: SylvainPictureurl,
- url: "https://youtu.be/y1J04klfiYA",
- },
- {
- completeName: "Johan Mabille",
- firstName: "Johan",
- position: "Technical Director",
- pictureRoute: JohanPictureurl,
- url: "https://youtu.be/ZoHJtMxfzW8",
- },
- {
- completeName: "Martin Renou",
- firstName: "Martin",
- position: "Technical Director",
- pictureRoute: MartinPictureurl,
- url: "https://youtu.be/s0Pdw-_GPjI",
- },
- {
- completeName: "Jeremy Tuloup",
- firstName: "Jeremy",
- position: "Technical Director",
- pictureRoute: JeremyPictureurl,
- url: "https://youtu.be/5ChxIgwbVN8",
- },
- {
- completeName: "Afshin Darian",
- firstName: "Darian",
- position: "Technical Director",
- pictureRoute: DarianPictureurl,
- url: "https://youtu.be/lR-xEIluZOE",
- },
- {
- completeName: "David Brochart",
- firstName: "David",
- position: "Technical Director",
- pictureRoute: DavidPictureurl,
- url: "https://youtu.be/HDvJBT94_-A",
- },
- {
- completeName: "Gabriela Vives",
- firstName: "Gabriela",
- position: "UX Designer and Researcher",
- pictureRoute: GabrielaPictureurl,
- url: "https://youtu.be/cGk5OrNRDjQ",
- },
- {
- completeName: "Trung Le Duc",
- firstName: "Trung",
- position: "Scientific Software Developer",
- pictureRoute: TrungPictureurl,
- url: "https://youtu.be/5S4e9MzN5ts",
- },
-];
diff --git a/src/components/contact/ContactForm.tsx b/src/components/contact/ContactForm.tsx
deleted file mode 100644
index 176c4387b..000000000
--- a/src/components/contact/ContactForm.tsx
+++ /dev/null
@@ -1,78 +0,0 @@
-import styles from "./styles.module.css";
-
-export default function ContactForm() {
- return (
- <>
-
- >
- );
- }
\ No newline at end of file
diff --git a/src/components/contact/index.tsx b/src/components/contact/index.tsx
deleted file mode 100644
index eb0614f2d..000000000
--- a/src/components/contact/index.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import styles from "./styles.module.css";
-import ContactForm from "./ContactForm";
-import { useEffect, useState } from "react";
-import ContactIllustration from "/img/illustrations/contact.svg";
-
-export function Contact() {
- return (
-
- );
-}
-export default Contact;
diff --git a/src/components/footer/Footer.tsx b/src/components/footer/Footer.tsx
index 9d6cfe25d..0b361d39e 100644
--- a/src/components/footer/Footer.tsx
+++ b/src/components/footer/Footer.tsx
@@ -2,18 +2,20 @@ import Link from "@docusaurus/Link";
import styles from "./styles.module.css";
import GHPicture from "@site/static/img/socialmedias/GH.svg";
import LinkedInPicture from "@site/static/img/socialmedias/LinkedIn.svg";
-import XPicture from "@site/static/img/socialmedias/X.svg";
+import BlueskyPicture from "@site/static/img/socialmedias/Bluesky.svg";
+import MastodonPicture from "@site/static/img/socialmedias/Mastodon.svg"
export function SocialMediasQuantStack() {
return (
Follow us on
-
);
@@ -25,10 +27,13 @@ export default function Footer() {
@@ -39,7 +44,7 @@ export default function Footer() {
- Home
+ Home
@@ -74,7 +79,7 @@ export default function Footer() {
>
-
QuantStack office
+
QuantStack
16, avenue Curti
94100 Saint-Maur-des-Fossés
France
@@ -84,10 +89,13 @@ export default function Footer() {
+
+ Legal
+
-
QuantStack office
+
QuantStack
16, avenue Curti
94100 Saint-Maur-des-Fossés
France
@@ -98,7 +106,7 @@ export default function Footer() {
- Copyright © 2024 · QuantStack website · Built with Docusaurus
+ Copyright © 2026 · QuantStack
diff --git a/src/components/footer/styles.module.css b/src/components/footer/styles.module.css
index 6b0cc7760..b5253eb87 100644
--- a/src/components/footer/styles.module.css
+++ b/src/components/footer/styles.module.css
@@ -1,6 +1,8 @@
.footer_container {
background-color: var(--ifm-color-primary-p1);
padding: var(--ifm-spacing-xl) var(--ifm-spacing-2xl) 0 var(--ifm-spacing-2xl);
+ position: relative;
+ z-index: 2;
}
.copyright_container {
diff --git a/src/components/fundable/FundableProjectCard.tsx b/src/components/fundable/FundableProjectCard.tsx
new file mode 100644
index 000000000..7ecab44c8
--- /dev/null
+++ b/src/components/fundable/FundableProjectCard.tsx
@@ -0,0 +1,39 @@
+import styles from "./styles.module.css";
+import { useHistory } from "@docusaurus/router";
+import ProgressBar from "./ProgressBar";
+import Card from "../layout/Card";
+
+export default function FundableProjectCard({ project }) {
+ const history = useHistory();
+
+ function open() {
+ if (window.getSelection()?.toString()) return;
+ const category = new URLSearchParams(window.location.search).get("category");
+ const search = category ? `?category=${encodeURIComponent(category)}` : "";
+ history.push({
+ pathname: `/sponsor/${project.pageName}`,
+ search,
+ state: { fromFundable: true, scrollY: window.scrollY },
+ });
+ }
+
+ const desc = project.shortDescription.length > 160
+ ? project.shortDescription.substring(0, 160) + "…"
+ : project.shortDescription;
+
+ return (
+
+ {project.category}
+ {project.title}
+ {desc}
+
+
{project.price}
+
+
+ {project.currentFundingPercentage}% funded
+ {project.currentNbOfFunders > 0 && ` · ${project.currentNbOfFunders} funder${project.currentNbOfFunders > 1 ? "s" : ""}`}
+
+
+
+ );
+}
diff --git a/src/components/fundable/GetAQuoteForm.tsx b/src/components/fundable/GetAQuoteForm.tsx
new file mode 100644
index 000000000..dcd9197cf
--- /dev/null
+++ b/src/components/fundable/GetAQuoteForm.tsx
@@ -0,0 +1,88 @@
+import styles from "./styles.module.css";
+
+export default function GetAQuoteForm() {
+ return (
+
+
+
+
+ Project name
+
+
+
+
+
+ Your name
+
+
+
+
+
+
+
+ Your company
+
+
+
+
+
+
+
+
+ Your phone number
+
+
+
+
+
+
+
+ Your message to us
+
+
+
+
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/components/fundable/GetAQuotePage.tsx b/src/components/fundable/GetAQuotePage.tsx
new file mode 100644
index 000000000..45c35a721
--- /dev/null
+++ b/src/components/fundable/GetAQuotePage.tsx
@@ -0,0 +1,63 @@
+
+import styles from "./styles.module.css";
+import GetAQuoteForm from "./GetAQuoteForm"
+import { LargeProjectCardContent } from "./LargeProjectCard";
+import { useHistory } from "@docusaurus/router";
+import Layout from "@theme/Layout";
+import { Route } from 'react-router-dom';
+import { getCategoryFromProjectPageName } from ".";
+
+function GetAQuoteComponent({ project }) {
+ return (
+
+ )
+}
+export default function GetAQuotePage() {
+ const history = useHistory();
+
+ const handleClose = () => {
+ history.goBack();
+ }
+ return (
+
+ {
+ const { pageName } = match.params; /* extract the dynamic part from the url i.e. the pageName*/
+ const projectsByCategory = getCategoryFromProjectPageName(pageName);
+ const project = projectsByCategory.find((project) => project.pageName === pageName);
+ if (!project) return null;
+
+ return (
+
+
+
+
+ );
+ }}
+ />
+
+ )
+}
\ No newline at end of file
diff --git a/src/components/fundable/LargeProjectCard.tsx b/src/components/fundable/LargeProjectCard.tsx
new file mode 100644
index 000000000..a25451961
--- /dev/null
+++ b/src/components/fundable/LargeProjectCard.tsx
@@ -0,0 +1,38 @@
+import styles from "./styles.module.css";
+import React from "react";
+import LinkToGetAQuote from "./LinkToGetAQuote";
+
+export function LargeProjectCardContent({ project }) {
+ return (
+
+ )
+}
+export default function LargeProjectCard({ project }) {
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/src/components/fundable/LargeProjectCardPage.tsx b/src/components/fundable/LargeProjectCardPage.tsx
new file mode 100644
index 000000000..62caa3e00
--- /dev/null
+++ b/src/components/fundable/LargeProjectCardPage.tsx
@@ -0,0 +1,78 @@
+import React from 'react';
+import Layout from '@theme/Layout';
+import { useHistory, useLocation } from '@docusaurus/router';
+import { useEffect } from 'react';
+import { Route } from 'react-router-dom';
+import { getCategoryFromProjectPageName } from ".";
+import { FundableContent } from "@site/src/pages/sponsor";
+import styles from "@site/src/components/about/styles.module.css";
+import LargeProjectCard from './LargeProjectCard';
+
+function backToOverview(history, scrollY) {
+ const category = new URLSearchParams(window.location.search).get("category");
+ const search = category ? `?category=${encodeURIComponent(category)}` : "";
+ history.replace({ pathname: '/sponsor', search });
+ if (scrollY !== undefined) {
+ setTimeout(() => window.scrollTo({ top: scrollY, behavior: 'auto' }), 0);
+ }
+}
+
+export default function LargeProjectCardPage() {
+ const location = useLocation();
+ const history = useHistory();
+
+ useEffect(() => {
+ if (location.state?.fromFundable) {
+ window.scrollTo({ top: location.state.scrollY ?? 0, behavior: 'auto' });
+ }
+ }, []);
+
+ const handleOverlayClick = (e) => {
+ if (window.getSelection()?.toString()) return;
+ if (e.target !== e.currentTarget) return;
+ backToOverview(history, location.state?.scrollY);
+ };
+
+ const handleClose = () => {
+ if (location.state?.fromFundable) {
+ backToOverview(history, location.state?.scrollY);
+ } else {
+ history.goBack();
+ }
+ }
+ return (
+
+
+ {
+ const { pageName } = match.params; /* extract the dynamic part from the url i.e. the pageName*/
+ const projectsByCategory = getCategoryFromProjectPageName(pageName);
+ const project = projectsByCategory.find((project) => project.pageName === pageName);
+ if (!project) return null;
+
+ return (
+
+
e.stopPropagation()}
+ >
+
+
+
+
+ );
+ }}
+ />
+
+ )
+}
+
diff --git a/src/components/fundable/LinkToGetAQuote.tsx b/src/components/fundable/LinkToGetAQuote.tsx
new file mode 100644
index 000000000..9b03cd0cb
--- /dev/null
+++ b/src/components/fundable/LinkToGetAQuote.tsx
@@ -0,0 +1,15 @@
+import styles from "./styles.module.css";
+import Link from "@docusaurus/Link";
+
+export default function LinkToGetAQuote({ label, pageName }) {
+ return (
+
+
+ {label}
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/components/fundable/MenuSideBar.tsx b/src/components/fundable/MenuSideBar.tsx
new file mode 100644
index 000000000..e4c4684ff
--- /dev/null
+++ b/src/components/fundable/MenuSideBar.tsx
@@ -0,0 +1,50 @@
+// src/components/ScrollSidebar.js
+import React, { useEffect, useState } from 'react';
+import styles from "./styles.module.css";
+
+const sections = [
+ { id: 'jupyter-ecosystem', label: 'Jupyter ecosystem' },
+ { id: 'package-management', label: 'Package management' },
+ { id: 'scientific-computing', label: 'Scientific computing' },
+ { id: 'apache-arrow', label: 'Apache Arrow and Parquet' }
+];
+
+export default function MenuSideBar() {
+ const [activeSectionId, setActiveSectionId] = useState('jupyter-ecosystem');
+
+ useEffect(() => {
+ const handleScroll = () => {
+ const scrollPosition = window.scrollY + 300;
+ for (const section of sections) {
+ const element = document.getElementById(section.id);
+ if (element && element.offsetTop <= scrollPosition) {
+ setActiveSectionId(section.id);
+ }
+ }
+ };
+ window.addEventListener('scroll', handleScroll);
+ handleScroll();
+ return () => window.removeEventListener('scroll', handleScroll);
+ }, []);
+
+ return (
+
+ );
+}
diff --git a/src/components/fundable/ProgressBar.tsx b/src/components/fundable/ProgressBar.tsx
new file mode 100644
index 000000000..262c1dcfe
--- /dev/null
+++ b/src/components/fundable/ProgressBar.tsx
@@ -0,0 +1,24 @@
+import React from "react";
+
+export default function ProgressBar({ value = 0, color = '#4caf50' }) {
+ return (
+
+ );
+}
diff --git a/src/components/fundable/ProjectCategory.tsx b/src/components/fundable/ProjectCategory.tsx
new file mode 100644
index 000000000..aca991758
--- /dev/null
+++ b/src/components/fundable/ProjectCategory.tsx
@@ -0,0 +1,22 @@
+import styles from "./styles.module.css";
+import { SmallProjectCard } from "./SmallProjectCard";
+
+
+export default function ProjectCategory({ projectCategoryName, projectCategory }) {
+ return (
+
+
{projectCategoryName }
+
+
+ {projectCategory.map((project) => (
+
+
+
+
+
+ ))}
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/components/fundable/SmallProjectCard.tsx b/src/components/fundable/SmallProjectCard.tsx
new file mode 100644
index 000000000..1dc0c3021
--- /dev/null
+++ b/src/components/fundable/SmallProjectCard.tsx
@@ -0,0 +1,103 @@
+import styles from "./styles.module.css";
+import { useHistory } from "@docusaurus/router";
+import BlueCaretIcon from "@site/static/img/icons/BlueCaret.svg";
+import LinkToMoreInformation from "./LinkToMoreInformation";
+import ProgressBar from "./ProgressBar";
+import FundersIcon from "@site/static/img/icons/Funders.svg";
+import DollarIcon from "@site/static/img/icons/Dollar.svg";
+
+export function SmallProjectCard({ project }) {
+ const history = useHistory();
+
+ function openDialog() {
+ const pageName = project.pageName;
+
+ history.push({
+ pathname: `/sponsor/${pageName}`,
+ state: { fromFundable: true, scrollY: window.scrollY },
+ });
+ }
+
+ return (
+
+
+
+
+
+
+ {project.title}
+
+
+
+
+
+
+
+ {project.shortDescription.length < 250
+ ? project.shortDescription
+ : project.shortDescription.substring(0, 250) + "..."}
+
+
+
+
+
+
+
+
+ Open-source under relevant licenses
+
+
+
+
+
+
+
+ The funding organization will be credited in communication about the project
+
+
+
+
Note: Costs and features can be further adapted following discussion with the funding organization
+
+
+
+
+ Indicative price
+
+
+ Funded at {project.currentFundingPercentage} %
+
+
+
+
+
{project.maxNbOfFunders === 1
+ ? 'Not shareable between funders'
+ : `Shareable between ${project.maxNbOfFunders} funders`
+ }
+
+
+
+
+
+ {project.currentNbOfFunders === 0
+ ? 'This project does not have any backers yet'
+ : `Backed by ${project.currentNbOfFunders}
+ ${project.currentNbOfFunders === 1 ? 'funder' : 'funders'}
+ `}
+
+
+
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/components/fundable/index.tsx b/src/components/fundable/index.tsx
new file mode 100644
index 000000000..ad220d0f2
--- /dev/null
+++ b/src/components/fundable/index.tsx
@@ -0,0 +1,61 @@
+import { useState, useEffect } from "react";
+import styles from "./styles.module.css";
+import CardGrid from "../layout/CardGrid";
+import { fundableProjectsDetails } from "@site/src/pages/sponsor/_projectsDetails";
+import FundableProjectCard from "./FundableProjectCard";
+
+const ALL_PROJECTS = Object.values(fundableProjectsDetails).flat();
+const CATEGORIES = ["All", ...new Set(ALL_PROJECTS.map((p) => p.category))];
+
+export function getCategoryFromProjectPageName(pageName: string) {
+ for (const projects of Object.values(fundableProjectsDetails)) {
+ const found = projects.find((p) => p.pageName === pageName);
+ if (found) return projects;
+ }
+ return null;
+}
+
+export function MainAreaFundableProjects() {
+ const [active, setActive] = useState(() => {
+ if (typeof window === "undefined") return "All";
+ const param = new URLSearchParams(window.location.search).get("category");
+ return CATEGORIES.includes(param) ? param : "All";
+ });
+
+ useEffect(() => {
+ const url = new URL(window.location.href);
+ if (active === "All") {
+ url.searchParams.delete("category");
+ } else {
+ url.searchParams.set("category", active);
+ }
+ window.history.replaceState(null, "", url.toString());
+ }, [active]);
+
+ const visible = active === "All"
+ ? ALL_PROJECTS
+ : ALL_PROJECTS.filter((p) => p.category === active);
+
+ return (
+ <>
+
+ {CATEGORIES.map((cat) => (
+ setActive(cat)}
+ >
+ {cat}
+
+ ))}
+
+
+ {visible.map((project) => (
+
+
+
+ ))}
+
+ >
+ );
+}
diff --git a/src/components/fundable/styles.module.css b/src/components/fundable/styles.module.css
new file mode 100644
index 000000000..55754ee56
--- /dev/null
+++ b/src/components/fundable/styles.module.css
@@ -0,0 +1,567 @@
+/* ── Filter + grid layout ──────────────────────────────── */
+
+.filter_tags {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--ifm-spacing-sm);
+ margin-bottom: var(--ifm-spacing-xl);
+}
+
+.filter_tag {
+ padding: 6px var(--ifm-spacing-md);
+ border-radius: 20px;
+ border: 1.5px solid var(--ifm-color-secondary-s3);
+ background: transparent;
+ color: var(--ifm-color-secondary-s3);
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 13px;
+ font-weight: 600;
+ cursor: pointer;
+ transition: background 0.15s, color 0.15s, border-color 0.15s;
+}
+
+.filter_tag:hover {
+ background: var(--ifm-color-secondary-s1);
+ color: var(--ifm-color-secondary-s2);
+ border-color: var(--ifm-color-secondary-s1);
+}
+
+.filter_tag_active {
+ background: var(--ifm-bg-emphasis);
+ color: white;
+ border-color: var(--ifm-bg-emphasis);
+}
+
+
+.fund_card {
+ gap: var(--ifm-spacing-sm);
+}
+
+.fund_card_category {
+ font-size: 11px;
+ font-weight: 700;
+ text-transform: uppercase;
+ letter-spacing: 0.6px;
+ color: var(--ifm-color-secondary-s3);
+}
+
+.fund_card_title {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 16px;
+ font-weight: 600;
+ color: var(--ifm-color-primary-p2);
+ line-height: 1.4;
+}
+
+.fund_card_desc {
+ font-size: 13px !important;
+ color: var(--ifm-color-neutral-n1);
+ line-height: 1.5;
+ flex: 1;
+ padding: 0 !important;
+ margin: 0 !important;
+}
+
+.fund_card_footer {
+ margin-top: auto;
+ padding-top: var(--ifm-spacing-sm);
+ border-top: 1px solid var(--ifm-color-neutral-n3);
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+}
+
+.fund_card_price {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 17px;
+ font-weight: 700;
+ color: var(--ifm-color-primary-p2);
+}
+
+.fund_card_pct {
+ font-size: 12px;
+ color: var(--ifm-color-neutral-n1);
+}
+
+.propose_section {
+ border-top: 1px solid var(--ifm-color-neutral-n3);
+ padding-top: var(--ifm-spacing-2xl);
+ margin-top: var(--ifm-spacing-xl);
+}
+
+/* ── Legacy card (kept for SmallProjectCard / ProjectCategory) ── */
+
+.small_project_card:hover {
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
+}
+
+.project_category_header {
+ font-family: var(--ifm-font-family-roboto);
+ font-style: normal;
+ font-weight: 700;
+ line-height: 20px;
+ text-align: center;
+ margin-bottom: var(--ifm-spacing-xl);
+ color: var(--ifm-color-secondary-s3);
+ text-align: left;
+}
+
+.project_title {
+ color: var(--ifm-text-color-main-title);
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 32px;
+ font-style: normal;
+ font-weight: 600;
+ /*line-height: 150%; /* 72px */
+ letter-spacing: 2.112px;
+ text-align: left;
+ padding: 0;
+}
+
+.project_catch_up_phrase {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 24px;
+ /* 150% */
+ letter-spacing: 0.15px;
+ color: var(--ifm-color-secondary-s3);
+ padding: var(--ifm-spacing-sm) 0
+}
+
+.project_dialog_overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: var(--ifm-overlay-background);
+ z-index: 1000;
+}
+
+.project_dialog_content {
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ background-color: var(--ifm-bg-neutral);
+ border: 1px solid #ccc;
+ box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
+ border-radius: 20px;
+ z-index: 4000;
+}
+
+.large_project_card_title {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 32px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 40px;
+ /* 125% */
+ margin: var(--ifm-spacing-md) 0;
+
+}
+
+.large_project_card_text {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: var(--ifm-font-size-small);
+ font-style: normal;
+ font-weight: 500;
+ line-height: 24px;
+ /* 150% */
+ letter-spacing: 0.15px;
+ color: var(--ifm-text-color-on-primary-p1);
+ text-align: justify;
+}
+
+.large_project_card_description_container {
+ text-align: justify;
+ padding: var(--ifm-spacing-md);
+}
+
+.large_project_card_description p {
+ font-family: var(--ifm-font-family-roboto);
+ /*background-color: #F1F1F1;*/
+ font-size: 16px;
+}
+
+.link_to_get_a_quote {
+ background-color: var(--ifm-color-orange-jupyter);
+ color: white;
+ font-weight: 700;
+}
+
+.icon_container {
+ display: flex;
+ gap: 10px;
+ margin: var(--ifm-spacing-md) 0;
+}
+
+
+.send_button {
+ width: 258px;
+ height: 59px;
+ background-color: var(--ifm-color-orange-jupyter);
+}
+
+
+
+.get_a_quote_form {
+ margin-top: var(--ifm-spacing-xl);
+ justify-content: center;
+}
+
+.get_a_quote_page {
+ position: relative;
+ max-width: 1200px;
+ margin: 0 auto;
+ padding: var(--ifm-spacing-3xl) var(--ifm-spacing-xl);
+}
+
+.form_label {
+ font-size: 12px;
+ color: var(--ifm-text-color);
+ background-color: var(--ifm-bg-neutral);
+}
+
+.project_information_container {
+ display: flex;
+ align-items: center;
+}
+
+.project_information {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 20px;
+ /* 142.857% */
+ letter-spacing: 0.25px;
+ padding: var(--ifm-spacing-sm);
+ text-align: justify;
+}
+
+.small_project_card_note {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 12px;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 16px;
+ /* 145.455% */
+ letter-spacing: 0.5px;
+ margin: var(--ifm-spacing-sm) 0;
+ text-align: justify;
+}
+
+.small_project_card_price_container {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 8px 0;
+}
+
+.small_project_card_price {
+ font-size: 20px;
+ padding: 8px 0;
+ background: var(--ifm-color-secondary-s1);
+ font-family: var(--ifm-font-family-roboto);
+ border-radius: 24px;
+ font-weight: 700;
+ width: 190px;
+ padding: 10px;
+ height: 56px;
+ text-align: center;
+ margin: var(--ifm-spacing-md) 0 var(--ifm-spacing-2xs) 0;
+}
+
+.small_project_card_indicative_price_text {
+ text-align: center;
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 12px;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 150%;
+ /* 18px */
+ letter-spacing: -0.132px;
+ text-transform: uppercase;
+}
+
+.small_project_card_funded_at_text {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: var(--ifm-font-size-small);
+ font-style: normal;
+ font-weight: 700;
+ line-height: 36px;
+}
+
+.shareable_container {
+ display: flex;
+ align-items: center;
+}
+
+.shareable_text {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 700;
+ line-height: 150%;
+ /* 18px */
+ letter-spacing: -0.132px;
+ text-transform: uppercase;
+ padding: var(--ifm-spacing-sm);
+}
+
+.link_to_more_information {
+ background-color: var(--ifm-color-secondary-s1);
+ color: black;
+ width: 150px;
+ height: 24px;
+ font-size: var(--ifm-font-size-small);
+ font-family: var(--ifm-font-family-roboto);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin: var(--ifm-spacing-sm) 0 0 0;
+ font-family: var(--ifm-font-family-roboto);
+ border-radius: 35px;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 150%;
+ letter-spacing: -0.176px;
+ border: none;
+ text-align: center;
+}
+
+.small_project_card_price_col {
+ background-color: rgba(217, 217, 217, 0.25);
+}
+
+.project_category_list {
+ display: flex;
+ justify-content: center;
+}
+
+.submit_proposition_button {
+ background-color: var(--ifm-color-secondary-s1);
+ color: black;
+ width: 150px;
+ height: 32px;
+ margin: var(--ifm-spacing-md);
+ font-family: var(--ifm-font-family-roboto);
+ border-radius: 8px;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 600;
+ border: none;
+ justify-content: center;
+ align-items: center;
+}
+
+@media only screen and (max-width: 500px) {
+
+ /*Mobile*/
+ .project_category_header {
+ font-size: 20px;
+ padding: var(--ifm-spacing-md);
+ }
+
+ .small_project_card {
+ width: 90vw;
+ margin-bottom: var(--ifm-spacing-lg);
+ border: 1px solid #ccc;
+ cursor: pointer;
+
+ }
+
+ .small_project_card_text_col {
+ padding: var(--ifm-spacing-sm);
+ }
+
+ .small_project_card_price_col {
+ padding: var(--ifm-spacing-sm);
+ }
+
+ .large_project_card {
+ width: 90vw;
+ padding: var(--ifm-spacing-xl);
+ padding: var(--ifm-spacing-xl) var(--ifm-spacing-xl);
+ overflow-y: auto;
+ max-height: 95vh;
+ }
+
+ .small_input {
+ width: 300px;
+ height: 56px;
+ border-radius: 4px;
+ }
+
+ .large_input {
+ width: 300px;
+ height: 160px;
+ border-radius: 4px;
+ }
+
+ .empty_card_small_input {
+ width: 80vw;
+ height: 20px
+ }
+
+ .empty_card_large_input {
+ width: 80vw;
+ height: 100px;
+ }
+
+ .send_button_container {
+ width: 300px;
+ }
+
+
+ .get_a_quote_dialog {
+ padding: var(--ifm-spacing-md);
+ }
+
+ .get_a_quote_text_col_desktop {
+ display: none;
+ }
+
+ .get_a_quote_form_col_desktop {
+ display: none;
+ }
+}
+
+@media (min-width: 500px) and (max-width: 996px) {
+
+ /*Tablet*/
+ .project_category_header {
+ padding: var(--ifm-spacing-md);
+ }
+
+ .small_project_card {
+ width: 80vw;
+ margin-bottom: var(--ifm-spacing-xl);
+ border: 1px solid #ccc;
+ cursor: pointer;
+ }
+
+ .small_project_card_text_col {
+ padding: var(--ifm-spacing-md);
+ }
+
+ .small_project_card_price_col {
+ padding: var(--ifm-spacing-md);
+ }
+
+ .large_project_card {
+ width: 80vw;
+ padding: 40px;
+ padding: var(--ifm-spacing-xl) var(--ifm-spacing-xl);
+ overflow-y: auto;
+ max-height: 95vh;
+ }
+
+ .small_input {
+ width: 400px;
+ height: 56px;
+ border-radius: 4px;
+ }
+
+ .large_input {
+ width: 400px;
+ height: 160px;
+ border-radius: 4px;
+ }
+
+ .empty_card_small_input {
+ width: 70vw;
+ height: 20px
+ }
+
+ .empty_card_large_input {
+ width: 70vw;
+ height: 200px;
+ }
+
+ .get_a_quote_dialog {
+ padding: var(--ifm-spacing-lg);
+ }
+
+ .get_a_quote_text_col_desktop {
+ display: none;
+ }
+
+ .get_a_quote_form_col_desktop {
+ display: none;
+ }
+}
+
+@media only screen and (min-width: 996px) {
+
+ /*Desktop*/
+ .project_category_header {
+ font-size: 28px;
+ }
+
+ .small_project_card {
+ width: 70vw;
+ margin: var(--ifm-spacing-2xl) 0;
+ border: 1px solid #ccc;
+ cursor: pointer;
+ }
+
+
+ .small_project_card_text_col {
+ padding: var(--ifm-spacing-lg);
+ }
+
+ .small_project_card_price_col {
+ padding: var(--ifm-spacing-lg);
+ }
+
+ .large_project_card {
+ width: 800px;
+ padding: 40px;
+ overflow-y: auto;
+ max-height: 95vh;
+ }
+
+ .small_input {
+ width: 400px;
+ height: 56px;
+ border-radius: 4px;
+ }
+
+ .large_input {
+ width: 400px;
+ height: 160px;
+ border-radius: 4px;
+ }
+
+ .empty_card_small_input {
+ width: 30vw;
+ height: 20px
+ }
+
+ .empty_card_large_input {
+ width: 30vw;
+ height: 100px;
+ }
+
+ .send_button_container {
+ height: 59px;
+ width: 400px;
+ }
+
+ .get_a_quote_dialog {
+ padding: var(--ifm-spacing-xl);
+ }
+
+ .get_a_quote_form_col_mobile {
+ display: none;
+ padding: var(--ifm-spacing-md)
+ }
+
+ .get_a_quote_form_col_desktop {
+ justify-content: center;
+ }
+}
\ No newline at end of file
diff --git a/src/components/home/AboutQS/index.tsx b/src/components/home/AboutQS/index.tsx
deleted file mode 100644
index 14e5903d6..000000000
--- a/src/components/home/AboutQS/index.tsx
+++ /dev/null
@@ -1,37 +0,0 @@
-import styles from "./styles.module.css";
-import GroupPhotoUrl from "@site/static/img/group/QuantStack-2000-58.png";
-import LinkToAboutUs from "../LinkToAboutUs";
-
-export default function AboutQS() {
- return (
-
-
-
-
- We are a team of expert of open-source developers, the very same
- people behind a number of technologies that you already use.
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/src/components/home/AboutQS/styles.module.css b/src/components/home/AboutQS/styles.module.css
deleted file mode 100644
index 78a6dcea0..000000000
--- a/src/components/home/AboutQS/styles.module.css
+++ /dev/null
@@ -1,32 +0,0 @@
-@media only screen and (max-width: 996px) {
- .aboutQS_container {
- background-color: var(--ifm-color-secondary-s2);
- color: white;
- padding: var(--ifm-spacing-2xl) var(--ifm-spacing-2xl) 0
- var(--ifm-spacing-2xl);
- text-align: center;
- }
-
- .aboutQS_text {
- font-size: 14px;
- text-align: center;
- margin-bottom: var(--ifm-spacing-xl);
- }
-
-}
-
-@media only screen and (min-width: 996px) {
- .aboutQS_container {
- margin-top: var(--ifm-spacing-2xl);
- background-color: var(--ifm-color-primary-p1);
- color: var(--ifm-color-primary-p2);
- padding: var(--ifm-spacing-2xl) var(--ifm-spacing-5xl) 0
- var(--ifm-spacing-5xl);
- }
-
- .aboutQS_text {
- font-size: 24px;
- text-align: center;
- margin-bottom: var(--ifm-spacing-lg);
- }
-}
diff --git a/src/components/home/Hero/LogosTableBy8.tsx b/src/components/home/Hero/LogosTableBy8.tsx
deleted file mode 100644
index 38ee0df16..000000000
--- a/src/components/home/Hero/LogosTableBy8.tsx
+++ /dev/null
@@ -1,333 +0,0 @@
-import styles from "./styles.module.css";
-import BloombergLogoUrl from "@site/static/img/logos/Bloomberg.png";
-import SGLogoUrl from "@site/static/img/logos/SG.png";
-import RapyutaLogoUrl from "@site/static/img/logos/Rapyuta.png";
-import CFMLogoUrl from "@site/static/img/logos/CFM.png";
-import EngieLogoUrl from "@site/static/img/logos/Engie.png";
-import JRCLogoUrl from "@site/static/img/logos/JRC.png";
-import ERDCLogoUrl from "@site/static/img/logos/ERDC.png";
-import PandaLogoUrl from "@site/static/img/logos/Panda.png";
-import UniversiteParisCiteLogoUrl from "@site/static/img/logos/UniversiteParisCite.png";
-import AirbusLogoUrl from "@site/static/img/logos/Airbus.png";
-import INRIALogoUrl from "@site/static/img/logos/INRIA.png";
-import CNAMLogoUrl from "@site/static/img/logos/CNAM.png";
-import NatixisLogoUrl from "@site/static/img/logos/Natixis.png";
-import NumfocusLogoUrl from "@site/static/img/logos/Numfocus.png";
-import RobocorpLogoUrl from "@site/static/img/logos/Robocorp.png";
-import CalPolyLogoUrl from "@site/static/img/logos/CalPoly.png";
-import MaxFordhamLogoUrl from "@site/static/img/logos/MaxFordham.png";
-import GainTheoryUrl from "@site/static/img/logos/GainTheory.png";
-import EnthoughtLogoUrl from "@site/static/img/logos/Enthought.png";
-import CressetLogoUrl from "@site/static/img/logos/Cresset.png";
-import TDKLogoUrl from "@site/static/img/logos/TDK.png";
-import HarvardLogoUrl from "@site/static/img/logos/Harvard.png";
-import EMBLLogoUrl from "@site/static/img/logos/EMBL.png";
-import QuantCoUrl from "@site/static/img/logos/QuantCo.png";
-import VoltronDataLogoUrl from "@site/static/img/logos/VoltronData.png";
-import SafranLogoUrl from "@site/static/img/logos/Safran.png";
-import DEShawLogoUrl from "@site/static/img/logos/DEShaw.png";
-import UniversiteParisSaclayLogoUrl from "@site/static/img/logos/UniversiteParisSaclay.png";
-import UnitedRoboticsLogoUrl from "@site/static/img/logos/UnitedRobotics.png";
-import CEALogoUrl from "@site/static/img/logos/CEA.png";
-import EcolePolytechniqueLogoUrl from "@site/static/img/logos/EcolePolytechnique.png";
-import Slider from "react-slick";
-// Import css files
-import "slick-carousel/slick/slick.css";
-import "slick-carousel/slick/slick-theme.css";
-
-export default function SimpleSlider() {
- let settings = {
- dots: true,
- infinite: true,
- speed: 1000,
- slidesToShow: 1,
- slidesToScroll: 1,
- arrows: false,
- autoplay: true,
- };
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
-
-export function LogosTable1() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
-
-export function LogosTable2() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
-
-export function LogosTable3() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
-
-export function LogosTable4() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/src/components/home/Hero/index.tsx b/src/components/home/Hero/index.tsx
deleted file mode 100644
index 6cfe5c83f..000000000
--- a/src/components/home/Hero/index.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-import styles from "./styles.module.css";
-import SimpleSlider from "./LogosTableBy8";
-import Astronaut from "/img/quantstack/astronaut.svg";
-
-export function Hero() {
- return (
-
-
-
-
-
-
- Open-source for discovery, science, and education
-
-
- A team behind major open-source projects of the scientific
- computing ecosystem
-
-
- Jupyter, Conda-forge, Mamba, Voilà, Xtensor and more.
-
-
-
-
-
-
-
-
-
- );
-}
-export default Hero;
diff --git a/src/components/home/Hero/styles.module.css b/src/components/home/Hero/styles.module.css
deleted file mode 100644
index c26181d5d..000000000
--- a/src/components/home/Hero/styles.module.css
+++ /dev/null
@@ -1,40 +0,0 @@
-.h2_custom {
- color: var(--ifm-color-blue-jupyter);
-}
-
-.sub_header {
- text-align: left;
-}
-
-.hero_container {
- background-color: var(--ifm-color-primary-p0);
- padding-bottom: var(--ifm-spacing-3xl);
-}
-
-@media only screen and (max-width: 996px) {
- /*Mobile*/
- .logos_carousel {
- display: none;
- }
-}
-
-@media only screen and (min-width: 996px) {
- /*Desktop*/
- .table_with_8_customers {
- margin-bottom: var(--ifm-spacing-xl);
- }
-
- .customer_logo {
- filter: grayscale(1);
- width: 100px;
- }
-
- .worked_with {
- font-size: 24px;
- font-weight: 200;
- font-family: var(--ifm-font-family-rubik-one);
- color: var(--ifm-color-primary-p2);
- text-align: center;
- margin: var(--ifm-spacing-2xl) 0;
- }
-}
diff --git a/src/components/home/Home.tsx b/src/components/home/Home.tsx
deleted file mode 100644
index 9c3c95ca3..000000000
--- a/src/components/home/Home.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-
-import Hero from "./Hero";
-import WhatWeDo from "./WhatWeDo";
-import ProjectsOverview from "./ProjectsOverview";
-import AboutQS from "./AboutQS";
-import News from "./News";
-import LearnMore from "./LearnMore";
-
-
-export function Home(): JSX.Element {
- return (
- <>
-
-
-
-
-
-
- >
- );
-}
-
-export default Home;
\ No newline at end of file
diff --git a/src/components/home/LearnMore/index.tsx b/src/components/home/LearnMore/index.tsx
deleted file mode 100644
index ce20d37e8..000000000
--- a/src/components/home/LearnMore/index.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import LinkToContact from "../LinkToContact";
-import styles from "./styles.module.css";
-
-export default function LearnMore() {
- return (
-
-
Want to learn more?
- Schedule a meeting and benefit from our expertise on Jupyter, Conda-forge,
- high-performance computing, and open-source development.
-
-
- );
-}
diff --git a/src/components/home/LearnMore/styles.module.css b/src/components/home/LearnMore/styles.module.css
deleted file mode 100644
index 838b19f99..000000000
--- a/src/components/home/LearnMore/styles.module.css
+++ /dev/null
@@ -1,6 +0,0 @@
-@media only screen and (max-width: 996px) {
- /*Mobile*/
- .learn_more_container {
- display: none;
- }
-}
\ No newline at end of file
diff --git a/src/components/home/LinkToAboutUs.tsx b/src/components/home/LinkToAboutUs.tsx
deleted file mode 100644
index adbe99591..000000000
--- a/src/components/home/LinkToAboutUs.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import styles from "./styles.module.css";
-import Link from "@docusaurus/Link";
-
-export default function LinkToAboutUs({label}) {
- return (
-
-
- {label}
-
-
- );
-}
diff --git a/src/components/home/LinkToBlogs.tsx b/src/components/home/LinkToBlogs.tsx
deleted file mode 100644
index 2ae3acb53..000000000
--- a/src/components/home/LinkToBlogs.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import styles from "./styles.module.css";
-import Link from "@docusaurus/Link";
-
-export default function LinkToBlogs({label}) {
- return (
-
-
- {label}
-
-
- );
-}
diff --git a/src/components/home/LinkToContact.tsx b/src/components/home/LinkToContact.tsx
deleted file mode 100644
index d3936b01d..000000000
--- a/src/components/home/LinkToContact.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import styles from "./styles.module.css";
-import Link from "@docusaurus/Link";
-
-export default function LinkToContact({label}) {
- return (
-
-
- {label}
-
-
- );
-}
diff --git a/src/components/home/LinkToProjects.tsx b/src/components/home/LinkToProjects.tsx
deleted file mode 100644
index 03860ddf1..000000000
--- a/src/components/home/LinkToProjects.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import styles from "./styles.module.css";
-import Link from "@docusaurus/Link";
-
-export default function LinkToProjects({label}) {
- return (
-
-
- {label}
-
-
- );
-}
diff --git a/src/components/home/LinkToServices.tsx b/src/components/home/LinkToServices.tsx
deleted file mode 100644
index 7c7c7252e..000000000
--- a/src/components/home/LinkToServices.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import styles from "./styles.module.css";
-import Link from "@docusaurus/Link";
-
-export default function LinkToServices({label}) {
- return (
-
-
- {label}
-
-
- );
-}
diff --git a/src/components/home/News/index.tsx b/src/components/home/News/index.tsx
deleted file mode 100644
index aa7b6f79e..000000000
--- a/src/components/home/News/index.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import BlogpostCard from "../../blog/BlogpostCard";
-import blogpostsDetails from "@site/src/components/blog/blogpostsDetails.json";
-import styles from "./styles.module.css";
-import LinkToBlogs from "../LinkToBlogs";
-
-export default function News() {
- const numberOfBlogs = blogpostsDetails.length;
- return (
-
-
-
-
Recent blog contributions
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/src/components/home/News/styles.module.css b/src/components/home/News/styles.module.css
deleted file mode 100644
index 2096f772d..000000000
--- a/src/components/home/News/styles.module.css
+++ /dev/null
@@ -1,10 +0,0 @@
-@media only screen and (max-width: 996px) {
- /*Mobile */
- .news_container {
- display: none;
- }
-}
-
-.news_container {
- margin-top: var(--ifm-spacing-2xl);
-}
diff --git a/src/components/home/ProjectsOverview/Computing.tsx b/src/components/home/ProjectsOverview/Computing.tsx
deleted file mode 100644
index 0dac1f148..000000000
--- a/src/components/home/ProjectsOverview/Computing.tsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import styles from "./styles.module.css";
-import ComputingMD from "@site/src/components/home/ProjectsOverview/descriptions/Computing.md";
-import XTensorXSIMDPicture from "@site/static/img/projects/xtensor_xsimd.svg";
-
-export default function ComputingProjects() {
- return (
-
-
-
-
Scientific computing
-
- Supporting the development of several C++ scientific computing
- packages.
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/src/components/home/ProjectsOverview/Jupyter.tsx b/src/components/home/ProjectsOverview/Jupyter.tsx
deleted file mode 100644
index e6c7c379d..000000000
--- a/src/components/home/ProjectsOverview/Jupyter.tsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import styles from "./styles.module.css";
-import JupyterMD from "./descriptions/Jupyter.md";
-import JupyterPictureUrl from "@site/static/img/projects/jupyterlab_examples.png";
-
-export default function JupyterProject() {
- return (
-
-
-
-
Jupyter project
- We strive to sustain the project in the long term.
-
-
-
-
-
-
-
-
- );
-}
diff --git a/src/components/home/ProjectsOverview/Robotics.tsx b/src/components/home/ProjectsOverview/Robotics.tsx
deleted file mode 100644
index af138830f..000000000
--- a/src/components/home/ProjectsOverview/Robotics.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-import styles from "./styles.module.css";
-import RoboticsMD from "@site/src/components/home/ProjectsOverview/descriptions/Robotics.md";
-import RoboticsPictureUrl from "@site/static/img/projects/robotics.png";
-
-export default function RoboticsProjects() {
- return (
-
-
-
-
Robotics
-
- We just kicked off a new initiative to Robotics education.
-
-
-
-
-
-
-
-
- );
-}
diff --git a/src/components/home/ProjectsOverview/RoboticsReverse.tsx b/src/components/home/ProjectsOverview/RoboticsReverse.tsx
deleted file mode 100644
index d79e3fc69..000000000
--- a/src/components/home/ProjectsOverview/RoboticsReverse.tsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import styles from "./styles.module.css";
-import RoboticsMD from "@site/src/components/home/ProjectsOverview/descriptions/Robotics.md";
-import RoboticsPictureUrl from "@site/static/img/projects/robotics.png";
-
-export default function RoboticsProjects() {
- return (
-
-
-
-
-
-
-
Robotics
-
- We just kicked off a new initiative to Robotics education.
-
-
-
-
-
- );
-}
diff --git a/src/components/home/ProjectsOverview/SpecialProjects.tsx b/src/components/home/ProjectsOverview/SpecialProjects.tsx
deleted file mode 100644
index 3be3aba20..000000000
--- a/src/components/home/ProjectsOverview/SpecialProjects.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import styles from "./styles.module.css";
-import SpecialProjectsMD from "@site/src/components/home/ProjectsOverview/descriptions/SpecialProjects.md";
-import SpecialProjectsPictureUrl from "@site/static/img/projects/jupytercad.png";
-
-export default function SpecialProjects() {
- return (
-
-
-
-
Special projects
-
- Applications built from the ground up and addressing a complete use
- case.
-
-
-
-
-
-
-
-
-
- );
- }
\ No newline at end of file
diff --git a/src/components/home/ProjectsOverview/SupplyChain.tsx b/src/components/home/ProjectsOverview/SupplyChain.tsx
deleted file mode 100644
index 240e2ed74..000000000
--- a/src/components/home/ProjectsOverview/SupplyChain.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-import styles from "./styles.module.css";
-import SupplyChainMD from "./descriptions/SupplyChain.md";
-import MambaPictureUrl from "@site/static/img/projects/mamba_console.png";
-
-export default function SupplyChainProjects() {
- return (
-
-
-
-
Software supply chain
-
- We are the main organization supporting the mamba package manager.
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/src/components/home/ProjectsOverview/SupplyChainReversed.tsx b/src/components/home/ProjectsOverview/SupplyChainReversed.tsx
deleted file mode 100644
index 240c82eaa..000000000
--- a/src/components/home/ProjectsOverview/SupplyChainReversed.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import styles from "./styles.module.css";
-import SupplyChainMD from "./descriptions/SupplyChain.md";
-import MambaPictureUrl from "@site/static/img/projects/mamba_console.png";
-
-export default function SupplyChainProjects() {
- return (
-
-
-
-
-
-
-
Software supply chain
-
- We are the main organization supporting the mamba package manager.
-
-
-
-
-
-
- );
-}
diff --git a/src/components/home/ProjectsOverview/descriptions/Computing.md b/src/components/home/ProjectsOverview/descriptions/Computing.md
deleted file mode 100644
index a5d453c99..000000000
--- a/src/components/home/ProjectsOverview/descriptions/Computing.md
+++ /dev/null
@@ -1,5 +0,0 @@
-QuantStack is the main organization supporting the development of several C++ scientific computing packages such as:
-
-- Xsimd, a unified API for SIMD operations, used by projects such as Apache Arrow, Firefox, Krita, Pythran, and naturally, xtensor.
-
-- Xtensor, a multi-dimensional array library in C++, supporting NumPy-style API and features, such as universal functions and broadcasting, while being lazy-evaluated. Language bindings for Python, R, and Julia are also available.
\ No newline at end of file
diff --git a/src/components/home/ProjectsOverview/descriptions/Jupyter.md b/src/components/home/ProjectsOverview/descriptions/Jupyter.md
deleted file mode 100644
index d84e442d2..000000000
--- a/src/components/home/ProjectsOverview/descriptions/Jupyter.md
+++ /dev/null
@@ -1,4 +0,0 @@
-Our team is deeply involved in the development of the Jupyter project, at both technical and organizational levels, with several members participating in the project governance in various capacities.
-
-We are responsible for some of the main innovations of the past years (JupyterLite, Collaborative editing in projectLab,the Voilà dashboard system, the projectLab visual debugger).
-
diff --git a/src/components/home/ProjectsOverview/descriptions/Robotics.md b/src/components/home/ProjectsOverview/descriptions/Robotics.md
deleted file mode 100644
index b24e067aa..000000000
--- a/src/components/home/ProjectsOverview/descriptions/Robotics.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
- QuantStack created the RoboStack distribution of ROS, the first
- multi-platform distribution of ROS, as conda packages.
-
- We are bootstrapping the jupyter-ros project, a
- Jupyterlab-basedrobotics development environment for the ROS
- ecosystem.
-
- We just kicked off a new initiative to Robotics education.
- Stay tuned for more on this subject!
-
\ No newline at end of file
diff --git a/src/components/home/ProjectsOverview/descriptions/SpecialProjects.md b/src/components/home/ProjectsOverview/descriptions/SpecialProjects.md
deleted file mode 100644
index 73263d051..000000000
--- a/src/components/home/ProjectsOverview/descriptions/SpecialProjects.md
+++ /dev/null
@@ -1,9 +0,0 @@
-Special projects leverage the open-source software stack that we
-maintain. Both JupyterCAD and Glue-Web leverage the JupyterLab
-application framework and assemble JupyterLab components to produce
-a different application.
-
- Such examples include:
- - JupyterCAD
- - Glue-Web
-
diff --git a/src/components/home/ProjectsOverview/descriptions/SupplyChain.md b/src/components/home/ProjectsOverview/descriptions/SupplyChain.md
deleted file mode 100644
index 67b014cc1..000000000
--- a/src/components/home/ProjectsOverview/descriptions/SupplyChain.md
+++ /dev/null
@@ -1,9 +0,0 @@
-
- We contribute to the conda-forge project, by maintaining a large
- number of package recipes, and contributing to the underlying
- infrastructure.
-
-
- We created the first conda/mamba-based package distribution for
- WebAssembly, emscripten-forge.
-
\ No newline at end of file
diff --git a/src/components/home/ProjectsOverview/index.tsx b/src/components/home/ProjectsOverview/index.tsx
deleted file mode 100644
index b59354aab..000000000
--- a/src/components/home/ProjectsOverview/index.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import JupyterProject from "./Jupyter";
-import SupplyChainProjects from "./SupplyChain";
-import SpecialProjects from "./SpecialProjects";
-import RoboticsProjects from "./Robotics";
-import ComputingProjects from "./Computing";
-import styles from "./styles.module.css";
-
-export default function ProjectsOverview() {
- return (
-
-
-
-
-
-
-
- );
-}
diff --git a/src/components/home/ProjectsOverview/styles.module.css b/src/components/home/ProjectsOverview/styles.module.css
deleted file mode 100644
index 3beb16147..000000000
--- a/src/components/home/ProjectsOverview/styles.module.css
+++ /dev/null
@@ -1,21 +0,0 @@
-@media (max-width: 996px) {
- .projects_overview_container {
- display: none;
- }
-}
-
-.h2_custom {
- color: var(--ifm-color-blue-jupyter);
-}
-
-.col_project_overview_with_padding {
- padding: var(--ifm-spacing-4xl) var(--ifm-spacing-3xl);
-}
-
-.project_yellow {
- background-color: var(--ifm-color-primary-p1);
-}
-
-.project_light_yellow {
- background-color: var(--ifm-color-primary-p0);
-}
diff --git a/src/components/home/WhatWeDo/Topics.tsx b/src/components/home/WhatWeDo/Topics.tsx
deleted file mode 100644
index 16478e2c0..000000000
--- a/src/components/home/WhatWeDo/Topics.tsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import { topicsDetails } from "./topics/topicsDetails";
-import { TopicsCard } from "./TopicsCard";
-import JupyterMD from "./topics/Jupyter.md";
-import SupplyChainMD from "./topics/SupplyChain.md";
-import ComputingMD from "./topics/Computing.md";
-
-const TopicsDescriptions = [JupyterMD, SupplyChainMD, ComputingMD];
-
-export function Topics() {
- return (
-
-
-
- {topicsDetails.map((topics, index) => (
-
-
-
- ))}
-
-
-
- );
-}
-
-export default Topics;
diff --git a/src/components/home/WhatWeDo/TopicsCard.tsx b/src/components/home/WhatWeDo/TopicsCard.tsx
deleted file mode 100644
index d1557e3c0..000000000
--- a/src/components/home/WhatWeDo/TopicsCard.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-import styles from "./styles.module.css";
-
-export function TopicsCard({ topics, TopicsDescriptionMD }) {
- return (
-
-
- {topics.name}
-
-
-
-
-
- );
-}
-
-export default TopicsCard;
diff --git a/src/components/home/WhatWeDo/index.tsx b/src/components/home/WhatWeDo/index.tsx
deleted file mode 100644
index 6e43cbb8c..000000000
--- a/src/components/home/WhatWeDo/index.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import styles from "./styles.module.css";
-import Topics from "./Topics";
-import LinkToServices from "../LinkToServices";
-import LinkToProjects from "../LinkToProjects";
-
-export function WhatWeDo() {
- return (
-
-
-
-
What we do
-
-
-
-
-
-
- );
-}
-
-export default WhatWeDo;
diff --git a/src/components/home/WhatWeDo/styles.module.css b/src/components/home/WhatWeDo/styles.module.css
deleted file mode 100644
index 228d2cdb4..000000000
--- a/src/components/home/WhatWeDo/styles.module.css
+++ /dev/null
@@ -1,72 +0,0 @@
-.topics_header {
- font-family: var(--ifm-font-family-rubik-one);
- font-size: var(--ifm-font-size-secondary-title);
- font-style: normal;
- font-weight: 400;
- line-height: 28px;
- text-align: center;
- margin-bottom: var(--ifm-spacing-xl);
-}
-
-div .topics_header {
- color: var(--ifm-color-neutral-n2);
-}
-
-@media only screen and (max-width: 996px) {
- /*Mobile*/
- .header {
- display: none;
- }
-
- .whatwedo_container {
- /*background-color: var(--ifm-color-primary-p1);*/
- padding: 0;
- margin-top: 0;
- }
-
- .topics_card {
- width: 80%;
- text-align: justify;
- background-color: var(--ifm-color-primary-p0);
- margin: var(--ifm-spacing-lg) auto var(--ifm-spacing-lg) auto ;
- }
-
- .topics_card .p {
- padding: var(--ifm-spacing-xs) var(--ifm-spacing-xs);
- }
-
-
- .services_link_desktop {
- display: none;
- }
-}
-
-@media only screen and (min-width: 996px) {
- .header {
- color: var(--ifm-color-primary-p2);
- }
-
- .projects_link{
- display: none;
- }
-
- .services_link_mobile {
- display: none;
- }
-
- .whatwedo_container {
- background-color: var(--ifm-color-primary-p1);
- padding: var(--ifm-spacing-3xl) var(--ifm-spacing-2xl) 0
- var(--ifm-spacing-2xl);
- }
-
- .topics_card {
- height: 462px;
- width: 350px;
- padding: var(--ifm-spacing-2xl) var(--ifm-spacing-lg);
- border-radius: 8px;
- box-shadow: 0px 0px 8px 1px #c8c8c7;
- background-color: var(--ifm-color-orange-light);
- margin-bottom: var(--ifm-spacing-xl);
- }
-}
diff --git a/src/components/home/WhatWeDo/topics/Computing.md b/src/components/home/WhatWeDo/topics/Computing.md
deleted file mode 100644
index 79297a227..000000000
--- a/src/components/home/WhatWeDo/topics/Computing.md
+++ /dev/null
@@ -1 +0,0 @@
-We created several popular scientific computing packages. XSimd, an unified API for SIMD operations, adopted by projects such as Apache Arrow, FireFox, Kytra, Pythran... Xtensor, a C++ n-dimensional array library with broadcasting and lazy evaluation.
\ No newline at end of file
diff --git a/src/components/home/WhatWeDo/topics/Jupyter.md b/src/components/home/WhatWeDo/topics/Jupyter.md
deleted file mode 100644
index 7ff88a240..000000000
--- a/src/components/home/WhatWeDo/topics/Jupyter.md
+++ /dev/null
@@ -1 +0,0 @@
-Our team comprises key maintainers of the Jupyter project. We are responsible for a large part of the maintenance and continuous improvement of the project, ensuring its long-term sustainability.
\ No newline at end of file
diff --git a/src/components/home/WhatWeDo/topics/SupplyChain.md b/src/components/home/WhatWeDo/topics/SupplyChain.md
deleted file mode 100644
index 07f55be5d..000000000
--- a/src/components/home/WhatWeDo/topics/SupplyChain.md
+++ /dev/null
@@ -1 +0,0 @@
-We contribute to the conda-forge project, which provides thousands of packages and accounts for billions of downloads. We created the mamba package manager, which underlies a lot of conda-forge’s infrastructure.
\ No newline at end of file
diff --git a/src/components/home/WhatWeDo/topics/topicsDetails.ts b/src/components/home/WhatWeDo/topics/topicsDetails.ts
deleted file mode 100644
index adb3fbe61..000000000
--- a/src/components/home/WhatWeDo/topics/topicsDetails.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-export const topicsDetails = [
- {
- topics: "jupyter",
- name: "Project Jupyter",
- imageRoute: "",
- },
- {
- topics: "supplychain",
- name: "Software Supply Chain",
- imageRoute: "",
- },
- {
- topics: "computing",
- name: "Scientific Computing",
- imageRoute: "",
- },
-];
diff --git a/src/components/home/styles.module.css b/src/components/home/styles.module.css
deleted file mode 100644
index 54c987305..000000000
--- a/src/components/home/styles.module.css
+++ /dev/null
@@ -1,48 +0,0 @@
-
-@media only screen and (max-width: 996px) {
- /*Mobile*/
- .link_to {
- background-color: var(--ifm-color-primary-p1);
- color: var(--ifm-text-color-on-primary-p1);
- width: 358px;
- font-weight: 700;
- }
-
- .link_to_services {
- background-color: var(--ifm-color-primary-p1);
- color: var(--ifm-text-color-on-primary-p1);
- width: 358px;
- font-weight: 700;
- }
-
- .link_to_about_us {
- background-color: var(--ifm-color-primary-p1);
- color: var(--ifm-text-color-on-primary-p1);
- width: 358px;
- font-weight: 700;
- }
-}
-
-@media only screen and (min-width: 996px) {
- .link_to {
- background-color: var(--ifm-color-secondary-s2);
- color: white;
- width: 358px;
- font-weight: 700;
- }
-
- .link_to_services {
- background-color: var(--ifm-color-blue-jupyter);
- color: white;
- width: 358px;
- font-weight: 700;
- }
-
-
- .link_to_about_us {
- background-color: var(--ifm-color-secondary-s2);
- color: white;
- width: 358px;
- font-weight: 700;
- }
-}
diff --git a/src/components/layout/BackgroundScene.module.css b/src/components/layout/BackgroundScene.module.css
new file mode 100644
index 000000000..9b200130e
--- /dev/null
+++ b/src/components/layout/BackgroundScene.module.css
@@ -0,0 +1,39 @@
+.container {
+ position: absolute;
+ inset: 0;
+ overflow: hidden;
+ pointer-events: none;
+ user-select: none;
+ z-index: 0;
+}
+
+.planets {
+ animation: bg-planets 58s ease-in-out infinite;
+}
+
+.graph {
+ animation: bg-graph 72s ease-in-out infinite;
+ animation-delay: -18s;
+}
+
+.snippets {
+ animation: bg-snippets 44s ease-in-out infinite;
+ animation-delay: -9s;
+}
+
+@keyframes bg-planets {
+ 0%, 100% { transform: translate(0px, 0px); }
+ 33% { transform: translate(11px, -16px); }
+ 66% { transform: translate(-8px, 10px); }
+}
+
+@keyframes bg-graph {
+ 0%, 100% { transform: translate(0px, 0px); }
+ 50% { transform: translate(-13px, 8px); }
+}
+
+@keyframes bg-snippets {
+ 0%, 100% { transform: translate(0px, 0px); }
+ 40% { transform: translate(7px, -11px); }
+ 75% { transform: translate(-5px, 13px); }
+}
diff --git a/src/components/layout/BackgroundScene.tsx b/src/components/layout/BackgroundScene.tsx
new file mode 100644
index 000000000..4db65d6dc
--- /dev/null
+++ b/src/components/layout/BackgroundScene.tsx
@@ -0,0 +1,110 @@
+import clsx from "clsx";
+import styles from "./BackgroundScene.module.css";
+
+const NODES: [number, number][] = [
+ [110, 95], [360, 60], [680, 85], [990, 50], [1230, 105],
+ [1385, 190], [1350, 410], [1160, 330], [1030, 190], [870, 295],
+ [760, 470], [1210, 590], [1030, 740], [800, 830], [570, 775],
+ [340, 845], [140, 755], [62, 510],
+];
+
+const EDGES: [number, number][] = [
+ [0,1],[1,2],[2,3],[3,4],[4,5],[5,6],[4,8],[8,9],[9,10],
+ [7,6],[6,11],[11,12],[12,13],[13,14],[14,15],[15,16],[16,17],
+ [2,9],[10,14],[7,11],[3,8],[0,17],
+];
+
+const SNIPPETS = [
+ { text: "import xarray as xr", x: 770, y: 765, angle: -4 },
+ { text: "conda install -c conda-forge", x: 1075, y: 540, angle: -6 },
+ { text: "∂L/∂θ = ∇θ L", x: 1295, y: 435, angle: 5 },
+ { text: "df.groupby('date').sum()", x: 305, y: 855, angle: 7 },
+ { text: "kernel = rbf(X, X.T)", x: 920, y: 115, angle: -3 },
+];
+
+type Props = { variant?: "light" | "dark" };
+
+export default function BackgroundScene({ variant = "light" }: Props) {
+ const c = variant === "dark" ? "#ffffff" : "#1d1d1b";
+ const planetOp = variant === "dark" ? 0.10 : 0.07;
+ const graphOp = variant === "dark" ? 0.15 : 0.11;
+ const snippetOp = variant === "dark" ? 0.13 : 0.09;
+
+ return (
+
+
+ {/* ── Planets ── */}
+
+ {/* large — bottom-left, partially cropped */}
+
+
+
+ {/* medium — top-right with ring */}
+
+
+
+ {/* small ringed — upper-left area */}
+
+
+
+ {/* small — left edge, mid-height */}
+
+
+ {/* tiny moon — top area */}
+
+
+ {/* tiny — upper-center */}
+
+
+ {/* tiny — lower-right */}
+
+
+ {/* tiny — lower area, partially cropped */}
+
+
+
+ {/* ── Computational graph ── */}
+
+ {EDGES.map(([a, b], i) => (
+
+ ))}
+ {NODES.map(([x, y], i) => (
+
+ ))}
+
+
+ {/* ── Floating code snippets ── */}
+
+ {SNIPPETS.map(({ text, x, y, angle }, i) => (
+
+ {text}
+
+ ))}
+
+
+
+ );
+}
diff --git a/src/components/layout/Banner.tsx b/src/components/layout/Banner.tsx
new file mode 100644
index 000000000..44f811f29
--- /dev/null
+++ b/src/components/layout/Banner.tsx
@@ -0,0 +1,28 @@
+import clsx from "clsx";
+import styles from "./styles.module.css";
+import type { ReactNode } from "react";
+
+type Props = {
+ bg?: "dark" | "light";
+ title?: string;
+ cta?: ReactNode;
+ fullHeight?: boolean;
+ children: ReactNode;
+};
+
+export default function Banner({ bg = "dark", title, cta, fullHeight = false, children }: Props) {
+ return (
+
+ {title && (
+
+ {title}
+
+ )}
+
{children}
+ {cta &&
{cta}
}
+
+ );
+}
diff --git a/src/components/layout/Card.tsx b/src/components/layout/Card.tsx
new file mode 100644
index 000000000..22075073b
--- /dev/null
+++ b/src/components/layout/Card.tsx
@@ -0,0 +1,28 @@
+import clsx from "clsx";
+import styles from "./styles.module.css";
+import React from "react";
+
+type Props = {
+ bg?: "white" | "yellow" | "transparent";
+ hover?: boolean;
+ className?: string;
+ onClick?: () => void;
+ children: React.ReactNode;
+};
+
+export default function Card({ bg = "white", hover = false, className, onClick, children }: Props) {
+ return (
+
+ {children}
+
+ );
+}
diff --git a/src/components/layout/CardGrid.tsx b/src/components/layout/CardGrid.tsx
new file mode 100644
index 000000000..e090e54a3
--- /dev/null
+++ b/src/components/layout/CardGrid.tsx
@@ -0,0 +1,24 @@
+import clsx from "clsx";
+import styles from "./styles.module.css";
+import type { ReactNode } from "react";
+
+type Props = {
+ cols?: 2 | 3 | 4;
+ children: ReactNode;
+ className?: string;
+};
+
+export default function CardGrid({ cols = 3, children, className }: Props) {
+ return (
+
+ );
+}
diff --git a/src/components/layout/PageBackground.module.css b/src/components/layout/PageBackground.module.css
new file mode 100644
index 000000000..f2258a4d1
--- /dev/null
+++ b/src/components/layout/PageBackground.module.css
@@ -0,0 +1,45 @@
+.container {
+ position: fixed;
+ inset: 0;
+ pointer-events: none;
+ user-select: none;
+ z-index: 1;
+ /* color drives currentColor on all SVG children */
+ color: var(--bg-scene-color, #1d1d1b);
+ transition: color 0.7s ease;
+ overflow: hidden;
+}
+
+.planets {
+ opacity: var(--bg-planet-op, 0.07);
+ animation: bg-planets 58s ease-in-out infinite;
+}
+
+.graph {
+ opacity: var(--bg-graph-op, 0.11);
+ animation: bg-graph 72s ease-in-out infinite;
+ animation-delay: -18s;
+}
+
+.snippets {
+ opacity: var(--bg-snippet-op, 0.09);
+ animation: bg-snippets 44s ease-in-out infinite;
+ animation-delay: -9s;
+}
+
+@keyframes bg-planets {
+ 0%,100% { transform: translate(0, 0); }
+ 33% { transform: translate(11px, -16px); }
+ 66% { transform: translate(-8px, 10px); }
+}
+
+@keyframes bg-graph {
+ 0%,100% { transform: translate(0, 0); }
+ 50% { transform: translate(-13px, 8px); }
+}
+
+@keyframes bg-snippets {
+ 0%,100% { transform: translate(0, 0); }
+ 40% { transform: translate(7px, -11px); }
+ 75% { transform: translate(-5px, 13px); }
+}
diff --git a/src/components/layout/PageBackground.tsx b/src/components/layout/PageBackground.tsx
new file mode 100644
index 000000000..6963e6949
--- /dev/null
+++ b/src/components/layout/PageBackground.tsx
@@ -0,0 +1,101 @@
+import styles from "./PageBackground.module.css";
+
+const NODES: [number, number][] = [
+ [110, 95], [360, 60], [680, 85], [990, 50], [1230, 105],
+ [1385, 190], [1350, 410], [1160, 330], [1030, 190], [870, 295],
+ [760, 470], [1210, 590], [1030, 740], [800, 830], [570, 775],
+ [340, 845], [140, 755], [62, 510],
+];
+
+const EDGES: [number, number][] = [
+ [0,1],[1,2],[2,3],[3,4],[4,5],[5,6],[4,8],[8,9],[9,10],
+ [7,6],[6,11],[11,12],[12,13],[13,14],[14,15],[15,16],[16,17],
+ [2,9],[10,14],[7,11],[3,8],[0,17],
+];
+
+const SNIPPETS = [
+ { text: "import xarray as xr", x: 770, y: 765, angle: -4 },
+ { text: "conda install -c conda-forge", x: 1075, y: 540, angle: -6 },
+ { text: "∂L/∂θ = ∇θ L", x: 1295, y: 435, angle: 5 },
+ { text: "df.groupby('date').sum()", x: 305, y: 855, angle: 7 },
+ { text: "kernel = rbf(X, X.T)", x: 920, y: 115, angle: -3 },
+];
+
+export default function PageBackground() {
+ return (
+
+
+ {/* ── Planets ── */}
+
+ {/* large — bottom-left, partially cropped */}
+
+
+
+ {/* medium — top-right with ring */}
+
+
+
+ {/* small ringed — upper-left area */}
+
+
+
+ {/* small — left edge, mid-height */}
+
+
+ {/* tiny moon — top area */}
+
+
+ {/* tiny — upper-center */}
+
+
+ {/* tiny — lower-right */}
+
+
+ {/* tiny — lower area, partially cropped */}
+
+
+
+ {/* ── Computational graph ── */}
+
+ {EDGES.map(([a, b], i) => (
+
+ ))}
+ {NODES.map(([x, y], i) => (
+
+ ))}
+
+
+ {/* ── Floating code snippets ── */}
+
+ {SNIPPETS.map(({ text, x, y, angle }, i) => (
+
+ {text}
+
+ ))}
+
+
+
+ );
+}
diff --git a/src/components/layout/ScrollDownCTA.tsx b/src/components/layout/ScrollDownCTA.tsx
new file mode 100644
index 000000000..90ed9dd17
--- /dev/null
+++ b/src/components/layout/ScrollDownCTA.tsx
@@ -0,0 +1,29 @@
+import React from "react";
+
+export default function ScrollDownCTA({ label = "Read more" }: { label?: string }) {
+ return (
+
window.scrollBy({ top: window.innerHeight, behavior: "smooth" })}
+ style={{
+ display: "inline-flex",
+ alignItems: "center",
+ gap: "8px",
+ cursor: "pointer",
+ background: "none",
+ border: "none",
+ padding: "14px 0",
+ fontFamily: "var(--ifm-font-family-roboto)",
+ fontSize: "15px",
+ fontWeight: 700,
+ letterSpacing: "0.5px",
+ color: "var(--ifm-color-primary-p2)",
+ textDecoration: "none",
+ }}
+ >
+ {label}
+
+
+
+
+ );
+}
diff --git a/src/components/layout/Section.tsx b/src/components/layout/Section.tsx
new file mode 100644
index 000000000..6a20836c0
--- /dev/null
+++ b/src/components/layout/Section.tsx
@@ -0,0 +1,42 @@
+import clsx from "clsx";
+import styles from "./styles.module.css";
+import type { ReactNode } from "react";
+
+type Props = {
+ bg?: "white" | "yellow" | "dark" | "light-blue" | "light-grey";
+ spacing?: "normal" | "tight" | "loose";
+ pageTop?: boolean;
+ fullHeight?: boolean;
+ background?: ReactNode;
+ children: ReactNode;
+ className?: string;
+};
+
+export default function Section({
+ bg = "white",
+ spacing = "normal",
+ pageTop = false,
+ fullHeight = false,
+ background,
+ children,
+ className,
+}: Props) {
+ return (
+
+ {background &&
{background}
}
+
+
+ );
+}
diff --git a/src/components/layout/SectionSeparator.tsx b/src/components/layout/SectionSeparator.tsx
new file mode 100644
index 000000000..670d4ce56
--- /dev/null
+++ b/src/components/layout/SectionSeparator.tsx
@@ -0,0 +1,58 @@
+type Color = "dark" | "blue" | "red" | "white";
+type Segment = { w: number; c: Color };
+
+const D = (w: number): Segment => ({ w, c: "dark" });
+const B = (w: number): Segment => ({ w, c: "blue" });
+const R = (w: number): Segment => ({ w, c: "red" });
+const W = (w: number): Segment => ({ w, c: "white" });
+
+const VARIANTS: Record
= {
+ // home: after hero | blog: after header
+ 1: [ D(21), B(7), D(22), B(7), D(15), B(8), D(14), B(6) ],
+
+ // home: after "Who we work with" | careers: after header
+ 2: [ B(6), D(22), B(19), D(19), B(8), D(15), B(11) ],
+
+ // home: after "How we work with you" | sponsor: after header
+ 3: [ D(26), B(17), D(24), B(15), D(11), B(7) ],
+
+ // services: after header — no accent, dense rhythm
+ 4: [ D(8), B(5), D(12), B(8), D(13), B(8), D(10), B(9), D(13), B(7), D(7) ],
+
+ // (unused) — pure blue/dark
+ 5: [ B(14), D(4), B(17), D(13), B(9), D(11), B(11), D(15), B(6) ],
+
+ // home: before blog
+ 6: [ D(7), B(7), D(9), B(7), D(11), B(7), D(11), B(7), D(10), B(8), D(9), B(7) ],
+
+ 7: [ D(5), B(6), D(7), B(7), D(9), B(7), D(10), B(6), D(8), B(7), D(9), B(6), D(7), B(6) ],
+
+ 8: [ D(3), B(6), D(19), B(8), D(5), B(17), D(11), B(6), D(13), B(12) ],
+};
+
+const COLOR_MAP: Record = {
+ dark: "#1d1d1b",
+ blue: "var(--ifm-color-blue-jupyter)",
+ red: "var(--ifm-color-accent-red)",
+ white: "#ffffff",
+};
+
+type Variant = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
+
+export default function SectionSeparator({ variant = 1 }: { variant?: Variant }) {
+ const segments = VARIANTS[variant];
+ return (
+
+ {segments.map(({ w, c }, i) => (
+
+ ))}
+
+ );
+}
diff --git a/src/components/layout/SplitSection.tsx b/src/components/layout/SplitSection.tsx
new file mode 100644
index 000000000..ba48beb3c
--- /dev/null
+++ b/src/components/layout/SplitSection.tsx
@@ -0,0 +1,43 @@
+import clsx from "clsx";
+import styles from "./styles.module.css";
+import Section from "./Section";
+import type { ReactNode } from "react";
+
+type Props = {
+ image: ReactNode;
+ reverse?: boolean;
+ ratio?: "60/40" | "50/50";
+ bg?: "white" | "yellow" | "dark" | "light-blue" | "light-grey";
+ spacing?: "normal" | "tight" | "loose";
+ pageTop?: boolean;
+ fullHeight?: boolean;
+ background?: ReactNode;
+ children: ReactNode;
+};
+
+export default function SplitSection({
+ image,
+ reverse = false,
+ ratio = "60/40",
+ bg = "white",
+ spacing = "normal",
+ pageTop = false,
+ fullHeight = false,
+ background,
+ children,
+}: Props) {
+ return (
+
+ );
+}
diff --git a/src/components/layout/styles.module.css b/src/components/layout/styles.module.css
new file mode 100644
index 000000000..7bbd7a99d
--- /dev/null
+++ b/src/components/layout/styles.module.css
@@ -0,0 +1,286 @@
+/* ─── Section ─── */
+
+.section {
+ width: 100%;
+ padding: var(--ifm-spacing-4xl) 0;
+ position: relative;
+}
+
+.section_bg_slot {
+ position: absolute;
+ inset: 0;
+ overflow: hidden;
+ pointer-events: none;
+ z-index: 0;
+}
+
+.section_content {
+ position: relative;
+ z-index: 2;
+}
+
+.section_page_top {
+ margin-top: calc(-1 * var(--ifm-navbar-height));
+ padding-top: calc(var(--ifm-spacing-3xl) + var(--ifm-navbar-height));
+}
+
+.section_white {
+ background: var(--ifm-bg-neutral);
+}
+
+.section_yellow {
+ background: var(--ifm-bg-brand);
+}
+
+.section_dark {
+ background: var(--ifm-bg-emphasis);
+ color: white;
+}
+
+.section_light_blue {
+ background: var(--ifm-bg-light-blue);
+}
+
+.section_light_grey {
+ background: var(--ifm-bg-light-grey);
+}
+
+.section_tight {
+ padding: var(--ifm-spacing-2xl) 0;
+}
+
+.section_loose {
+ padding: var(--ifm-spacing-5xl) 0;
+}
+
+.section_full_height {
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ box-sizing: border-box;
+}
+
+/* ─── SectionSeparator — rendered as pill divs in SectionSeparator.tsx ─── */
+
+@media (max-width: 996px) {
+ .section {
+ padding: var(--ifm-spacing-3xl) 0;
+ }
+
+ .section_page_top {
+ padding-top: calc(var(--ifm-spacing-2xl) + var(--ifm-navbar-height));
+ }
+}
+
+/* ─── SplitSection ─── */
+
+.split {
+ display: flex;
+ align-items: center;
+ gap: var(--ifm-spacing-2xl);
+}
+
+.split_reverse {
+ flex-direction: row-reverse;
+}
+
+.split_text {
+ flex: 3;
+ min-width: 0;
+}
+
+.split_image {
+ flex: 2;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ min-width: 0;
+}
+
+.split_50 > .split_text {
+ flex: 1;
+}
+
+.split_50 > .split_image {
+ flex: 1;
+}
+
+@media (max-width: 996px) {
+ .split {
+ flex-direction: column;
+ align-items: stretch;
+ }
+
+ .split_reverse {
+ flex-direction: column;
+ }
+
+ .split_text,
+ .split_image {
+ width: 100%;
+ }
+}
+
+/* ─── Card ─── */
+
+.card {
+ background: var(--ifm-bg-neutral);
+ border-radius: 10px;
+ padding: var(--ifm-spacing-lg);
+ box-shadow: var(--ifm-shadow-card);
+ height: 100%;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+}
+
+.card_yellow {
+ background: var(--ifm-bg-brand);
+}
+
+.card_transparent {
+ background: transparent;
+ box-shadow: none;
+}
+
+.card_hover {
+ cursor: pointer;
+ border: 1px solid transparent;
+ transition: box-shadow 0.2s, border-color 0.2s;
+}
+
+.card_hover:hover {
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
+ border-color: var(--ifm-color-neutral-n3);
+}
+
+@media (min-width: 996px) {
+ .card {
+ padding: var(--ifm-spacing-xl) var(--ifm-spacing-lg);
+ }
+}
+
+/* ─── CardGrid ─── */
+
+.card_grid {
+ display: grid;
+ gap: var(--ifm-spacing-xl);
+ grid-template-columns: repeat(3, 1fr);
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+.card_grid li {
+ margin-left: 0;
+}
+
+.card_grid_2 {
+ grid-template-columns: repeat(2, 1fr);
+}
+
+.card_grid_4 {
+ grid-template-columns: repeat(4, 1fr);
+}
+
+@media (max-width: 996px) {
+ .card_grid {
+ grid-template-columns: repeat(2, 1fr);
+ }
+
+ .card_grid_4 {
+ grid-template-columns: repeat(2, 1fr);
+ }
+
+ .card_grid_2 {
+ grid-template-columns: 1fr;
+ }
+}
+
+@media (max-width: 600px) {
+ .card_grid {
+ grid-template-columns: 1fr;
+ }
+
+ .card_grid_4 {
+ grid-template-columns: 1fr;
+ }
+}
+
+/* ─── Banner ─── */
+
+.banner {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ text-align: center;
+ gap: var(--ifm-spacing-lg);
+ padding: var(--ifm-spacing-4xl) var(--ifm-spacing-4xl);
+ font-family: var(--ifm-font-family-roboto);
+ font-weight: 500;
+ line-height: 150%;
+}
+
+.banner_dark {
+ background: var(--ifm-bg-emphasis);
+ color: white;
+ font-size: 28px;
+}
+
+.banner_dark :global(.link-to-button) {
+ background: var(--ifm-color-accent-yellow);
+ color: var(--ifm-color-primary-p2);
+}
+
+.banner_dark :global(.link-to-button):hover {
+ color: var(--ifm-color-primary-p2);
+ box-shadow: 0 8px 28px rgba(245, 229, 59, 0.5);
+}
+
+
+.banner_title {
+ font-style: normal;
+ font-weight: 600;
+ line-height: 150%;
+ letter-spacing: 2.112px;
+ margin-bottom: var(--ifm-spacing-md);
+}
+
+.banner_title_dark {
+ font-size: 48px;
+ color: var(--ifm-color-primary-p1);
+}
+
+.banner_title_light {
+ font-size: 32px;
+ color: var(--ifm-color-primary-p2);
+}
+
+.banner_body {
+ max-width: 800px;
+}
+
+.banner_full_height {
+ min-height: 100vh;
+ justify-content: center;
+}
+
+@media (max-width: 996px) {
+ .banner {
+ padding: var(--ifm-spacing-2xl) var(--ifm-spacing-lg);
+ font-size: 16px;
+ line-height: 20px;
+ letter-spacing: 0.1px;
+ }
+
+ .banner_title {
+ font-size: 32px;
+ letter-spacing: 2.112px;
+ }
+
+ .banner_title_dark {
+ font-size: 32px;
+ }
+}
diff --git a/src/components/projects/AllProjects.tsx b/src/components/projects/AllProjects.tsx
deleted file mode 100644
index 8ed3881c3..000000000
--- a/src/components/projects/AllProjects.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { projectsDetails } from "./descriptions/projectsDetails";
-import ProjectCard from "./ProjectCard";
-import styles from "./styles.module.css";
-
-export default function AllProjects() {
- return (
-
-
- {projectsDetails.map((project, index) => {
- return (
-
-
-
- );
- })}
-
-
- )
-}
diff --git a/src/components/projects/Header.tsx b/src/components/projects/Header.tsx
deleted file mode 100644
index 0d9f7a57e..000000000
--- a/src/components/projects/Header.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import styles from "./styles.module.css";
-import HeaderMD from "./descriptions/Header.md";
-
-export default function Header() {
- return (
-
-
-
-
Working in the open
-
-
-
-
-
-
- );
-}
diff --git a/src/components/projects/ProjectCard.tsx b/src/components/projects/ProjectCard.tsx
deleted file mode 100644
index f921b5890..000000000
--- a/src/components/projects/ProjectCard.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import styles from "./styles.module.css";
-
-export default function ProjectCard({ project }): JSX.Element {
- const prefix = "project_picture_";
- const base = `${prefix}${project.name}`
- return (
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/src/components/projects/ScheduleAMeeting.tsx b/src/components/projects/ScheduleAMeeting.tsx
deleted file mode 100644
index c83539b7b..000000000
--- a/src/components/projects/ScheduleAMeeting.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import styles from "./styles.module.css";
-import LinkToContact from "../home/LinkToContact";
-
-export default function ScheduleAMeeting() {
- return (
-
- Schedule a meeting and benefit from our experience in Python, C++,
- in-browser data visualization, and high-performance computing.
-
-
- );
-}
diff --git a/src/components/projects/descriptions/ApacheArrow.md b/src/components/projects/descriptions/ApacheArrow.md
deleted file mode 100644
index 58e149a59..000000000
--- a/src/components/projects/descriptions/ApacheArrow.md
+++ /dev/null
@@ -1,3 +0,0 @@
-The QuantStack team comprises key maintainers of the Apache Arrow project. The Apache Arrow team at QuantStack provides commercial support and custom development services in the Apache Arrow ecosystem.
-
-Check out our recent [announcement](https://medium.com/@QuantStack/quantstack-steps-up-to-support-apache-arrow-with-new-dedicated-team-9ddc952f20e2) on the launch of the Apache Arrow team at QuantStack.
diff --git a/src/components/projects/descriptions/CondaForge.md b/src/components/projects/descriptions/CondaForge.md
deleted file mode 100644
index b8078ea05..000000000
--- a/src/components/projects/descriptions/CondaForge.md
+++ /dev/null
@@ -1,14 +0,0 @@
-QuantStack is one of the key organizations supporting the
-conda-forge project, a community-led collection of recipes, build
-infrastructure and distributions for the conda/mamba package
-manager.
-
-Adopted at the global scale, conda-forge has become the reference
-source of build artifacts for the scientific computing ecosystem,
-accounting for over 150 million package downloads monthly.
-
-QuantStack developed key components of the conda-forge
-infrastructure, including the mamba package manager and the
-mamba-build utility, which underlie the build system of conda-forge.
-QuantStack team members also maintain a large number of conda-forge
-packages.
diff --git a/src/components/projects/descriptions/Header.md b/src/components/projects/descriptions/Header.md
deleted file mode 100644
index 1c87c9b4f..000000000
--- a/src/components/projects/descriptions/Header.md
+++ /dev/null
@@ -1,9 +0,0 @@
-Projects developed at QuantStack have reached millions of end users,
-from healthcare to education, from aerospace to geosciences, and
-from data sciences to robotics.
-
-
-Open-source development is a unique
-way to break down collaboration barriers and reach users with
-unexpected use cases. Enabling customization and extensions of the
-tools enables this diversity of applications.
diff --git a/src/components/projects/descriptions/Jupyter.md b/src/components/projects/descriptions/Jupyter.md
deleted file mode 100644
index 9b582d64c..000000000
--- a/src/components/projects/descriptions/Jupyter.md
+++ /dev/null
@@ -1,15 +0,0 @@
- QuantStack is one of the main organizations supporting the Jupyter
- project, an open-source ecosystem of developer tools meant to
- improve the workflows of scientists and engineers.
-
- In the past years, Jupyter has become a de-facto standard in both
- industry and academia, at the foundation of the main open-source and
- commercial data science platforms, with millions of users.
-
- The team comprises nine core contributors and maintainers of the
- project. We are also behind popular extensions for data
- visualization, robotics, and dashboarding.
-
- The QuantStack team is responsible for major evolutions in the
- project, such as the JupyterLab visual debugger, collaborative
- editing, or the development of JupyterLite.
\ No newline at end of file
diff --git a/src/components/projects/descriptions/Robotics.md b/src/components/projects/descriptions/Robotics.md
deleted file mode 100644
index a79602055..000000000
--- a/src/components/projects/descriptions/Robotics.md
+++ /dev/null
@@ -1,7 +0,0 @@
- QuantStack supports the open-source robotics ecosystem.
-
- We created the RoboStack distribution of ROS, the first conda/mamba
- based distribution of ROS, and the first cross-platform
- distribution of ROS. We are behind the jupyter-robotics project, a
- collection of JupyterLab and Jupyter extensions integrating ROS with
- the Jupyter ecosystem.
\ No newline at end of file
diff --git a/src/components/projects/descriptions/XTensorXSIMD.md b/src/components/projects/descriptions/XTensorXSIMD.md
deleted file mode 100644
index da7e05022..000000000
--- a/src/components/projects/descriptions/XTensorXSIMD.md
+++ /dev/null
@@ -1,16 +0,0 @@
- QuantStack kickstarted the development of the xtensor and xsimd
- projects, popular C++ libraries meant for numerical analysis with
- multi-dimensional array expressions, and accelerated computing.
-
- xtensor provides:
-
- - an extensible expression system enabling lazy broadcasting,
-
- - an API following the idioms of the C++ standard library,
-
- - tools to manipulate array expressions and build upon xtensor.
-
- The xsimd project provides a unified API for utilizing SIMD
- instructions of modern microprocessors.XSimd has seen a growing
- adoption in the past years, by projects such as Firefox, Krita,
- Pythran, and Apache Arrow.
\ No newline at end of file
diff --git a/src/components/projects/descriptions/projectsDetails.ts b/src/components/projects/descriptions/projectsDetails.ts
deleted file mode 100644
index 54417eadb..000000000
--- a/src/components/projects/descriptions/projectsDetails.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import jupyterLogoUrl from "@site/static/img/projects/Jupyter.png";
-import xtensorLogoUrl from "@site/static/img/projects/xtensor.png";
-import condaforgeLogoUrl from "@site/static/img/projects/conda_forge.png";
-import apachearrowLogoUrl from "@site/static/img/projects/apache_arrow.png";
-import robostackPictureUrl from "@site/static/img/projects/robostack.png";
-import JupyterMD from "./Jupyter.md";
-import CondaForgeMD from "./CondaForge.md";
-import XTensorXSIMDMD from "./XTensorXSIMD.md";
-import ApacheArrowMD from "./ApacheArrow.md";
-import RoboticsMD from "./Robotics.md";
-
-
-export const projectsDetails = [
- {
- name: "jupyter",
- title: "Jupyter",
- pictureRoute: jupyterLogoUrl,
- pictureWidth: "198px",
- pictureHeight: "234px",
- pictureAltText: "Picture for Jupyter project showing its logo.",
- ProjectMD: JupyterMD,
- reverse: "false"
- },
- {
- name: "xtensorxsimd",
- title: "Xtensor & Xsimd",
- pictureRoute: xtensorLogoUrl,
- pictureWidth: "257px",
- pictureHeight: "257px",
- pictureAltText: "Picture for Xtensor and Xsimd showing their respective logo.",
- ProjectMD: XTensorXSIMDMD,
- reverse: "true",
- },
- {
- name: "condaforge",
- title: "Conda-forge",
- pictureRoute: condaforgeLogoUrl,
- pictureWidth: "196px",
- pictureHeight: "180px",
- pictureAltText: "Picture for Condaforge project showing its forge logo.",
- ProjectMD: CondaForgeMD,
- reverse:"false"
- },
- {
- name: "apache_arrow",
- title: "Apache Arrow and Parquet",
- pictureRoute: apachearrowLogoUrl,
- pictureWidth: "176px",
- pictureHeight: "63px",
- pictureAltText: "Picture for Apache Arrow project showing the logo made of arrows.",
- ProjectMD: ApacheArrowMD,
- reverse:"false"
- },
- {
- name: "robotics",
- title: "Robotics",
- pictureRoute: robostackPictureUrl,
- pictureWidth: "189px",
- pictureHeight: "210px",
- pictureAltText: "Picture for robotics project showing an illustration with a robotics device.",
- ProjectMD: RoboticsMD,
- reverse:"true"
- },
-];
diff --git a/src/components/projects/index.tsx b/src/components/projects/index.tsx
deleted file mode 100644
index fc43e6173..000000000
--- a/src/components/projects/index.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import styles from "./styles.module.css";
-import Header from "./Header";
-import ScheduleAMeeting from "./ScheduleAMeeting";
-import AllProjects from "./AllProjects";
-
-export default function Projects() {
- return (
- <>
-
-
-
- >
- );
-}
diff --git a/src/components/projects/styles.module.css b/src/components/projects/styles.module.css
deleted file mode 100644
index 362f0f78c..000000000
--- a/src/components/projects/styles.module.css
+++ /dev/null
@@ -1,147 +0,0 @@
-
-.project_title {
- margin-bottom: var(--ifm-spacing-md);
- margin-top: var(--ifm-spacing-xl);
- font-family: var(--ifm-font-family-bebas-neue);
- font-size: var(--ifm-font-size-secondary-title);
- font-style: normal;
- font-weight: bolder;
- line-height: 150%;
- text-align: start;
-}
-
-div .project_title {
- color: var(--ifm-color-primary-p2);
- padding-left: var(--ifm-spacing-xl);
-}
-
-.project_description {
- padding: var(--ifm-spacing-md) var(--ifm-spacing-xl);
- text-align: justify;
-}
-
-.project_description p {
- color: var(--ifm-color-primary-p2);
-}
-
-@media only screen and (max-width: 996px) {
- /*Mobile*/
- .all_projects_container {
- margin-bottom: var(--ifm-spacing-3xl);
-
- }
-
- .header_container {
- padding-top: var(--ifm-spacing-2xl);
- background-color: var(--ifm-color-primary-p1);
- }
-
- .header_title {
- padding-left: none;
- }
-
- .header_text {
- font-family: var(--ifm-font-family-roboto);
- color: var(--ifm-color-primary-p2);
- font-size: 14px;
- font-style: normal;
- font-weight: 400;
- line-height: 20px;
- letter-spacing: 0.25px;
- text-align: justify;
- margin-bottom: var(--ifm-spacing-lg);
- padding: var(--ifm-spacing-lg) var(--ifm-spacing-xl);
- }
-
- .project_text {
- background-color: white;
- text-align: justify;
- }
-
- .project_picture_jupyter {
- border: none;
- margin-bottom: var(--ifm-spacing-xl);
- }
-
- .project_picture_xtensorxsimd {
- border: none;
- margin-bottom: var(--ifm-spacing-xl);
- }
-
- .project_picture_condaforge {
- border: none;
- margin-bottom: var(--ifm-spacing-xl);
- }
-
- .project_picture_apache_arrow {
- border: none;
- margin-bottom: var(--ifm-spacing-xl);
- }
-
- .project_picture_robotics {
- border: none;
- margin-bottom: var(--ifm-spacing-xl);
- }
-}
-
-@media only screen and (min-width: 996px) {
- /*Desktop*/
-
- .all_projects_container {
- margin: 0 0 var(--ifm-spacing-5xl) 0 ;
- }
- .header_container {
- margin-top: var(--ifm-spacing-6xl);
- }
- .header_title {
- padding-left: var(--ifm-spacing-4xl);
- }
-
- .header_text {
- font-family: var(--ifm-font-family-roboto);
- color: var(--ifm-color-primary-p2);
- font-size: 22px;
- font-style: normal;
- font-weight: 400;
- line-height: 28px;
- margin-bottom: var(--ifm-spacing-3xl);
- padding: var(--ifm-spacing-lg) var(--ifm-spacing-4xl);
- }
-
- .project_text {
- background-color: var(--ifm-color-orange-light);
- padding: var(--ifm-spacing-4xl) var(--ifm-spacing-3xl);
- margin-bottom: var(--ifm-spacing-lg);
- border-radius: 10px;
- }
-
- .project_picture_jupyter {
- border: solid 1px var(--ifm-color-orange-jupyter);
- margin-bottom: var(--ifm-spacing-lg);
- border-radius: 10px;
- }
-
- .project_picture_xtensorxsimd {
- border: solid 1px var(--ifm-color-green-xtensor);
- margin-bottom: var(--ifm-spacing-lg);
- border-radius: 10px;
- }
-
- .project_picture_condaforge {
- border: solid 1px var(--ifm-color-grey-condaforge);
- margin-bottom: var(--ifm-spacing-lg);
- border-radius: 10px;
- }
-
- .project_picture_apache_arrow {
- border: solid 1px black;
- margin-bottom: var(--ifm-spacing-lg);
- border-radius: 10px;
- }
-
- .project_picture_robotics {
- border: solid 1px rgb(146, 95, 218);
- margin-bottom: var(--ifm-spacing-lg);
- border-radius: 10px;
- }
-}
diff --git a/src/components/services/Header.tsx b/src/components/services/Header.tsx
deleted file mode 100644
index 0bc1d7aba..000000000
--- a/src/components/services/Header.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import styles from "./styles.module.css";
-
-export default function Header() {
- return (
-
-
-
-
-
- Hire QuantStack to build upon the Jupyter, Mamba, and the PyData
- ecosystem.
-
-
-
-
-
- );
-}
diff --git a/src/components/services/SpecialProjects.tsx b/src/components/services/SpecialProjects.tsx
deleted file mode 100644
index 13f298f51..000000000
--- a/src/components/services/SpecialProjects.tsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import SpecialProjectsMD from "./descriptions/SpecialProjects.md";
-import SpecialProjectsIllustration from "@site/static/img/illustrations/special_projects.svg";
-
-export default function SpecialProjects() {
- return (
- <>
-
-
-
-
-
Special projects
-
-
-
-
-
-
-
-
-
- >
- );
-}
diff --git a/src/components/services/Support.tsx b/src/components/services/Support.tsx
deleted file mode 100644
index 82a9a2d73..000000000
--- a/src/components/services/Support.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import SupportMD from "./descriptions/Support.md";
-import SupportIllustration from "/img/illustrations/support.svg";
-
-export default function Support() {
- return (
-
-
-
-
-
-
Professional Support
-
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/src/components/services/descriptions/SpecialProjects.md b/src/components/services/descriptions/SpecialProjects.md
deleted file mode 100644
index 97745a196..000000000
--- a/src/components/services/descriptions/SpecialProjects.md
+++ /dev/null
@@ -1,9 +0,0 @@
- We develop new packages from the ground up. Such special projects built upon our open-source stack include:
-
-- JupyterCAD,
-- JupyterLab-ROS,
-- Glue Web,
-- ipygany
-and many more.
-
-You can contract with us to leverage the Jupyter, conda and the general PyData ecosystem in an optimal way.
\ No newline at end of file
diff --git a/src/components/services/descriptions/Support.md b/src/components/services/descriptions/Support.md
deleted file mode 100644
index 473374bcd..000000000
--- a/src/components/services/descriptions/Support.md
+++ /dev/null
@@ -1,5 +0,0 @@
-We support organizations that depend on Jupyter, conda-forge, or the broader PyData ecosytem.
-
-We help deploy, extend, or customize software of the open-source scientific computing ecosystem.
-
-Work with the people behind the technology, and develop your strategy around the open-source stack.
\ No newline at end of file
diff --git a/src/components/services/index.tsx b/src/components/services/index.tsx
deleted file mode 100644
index 911b924d0..000000000
--- a/src/components/services/index.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import styles from "./styles.module.css";
-import Support from "./Support";
-import SpecialProjects from "./SpecialProjects";
-import Header from "./Header";
-import LinkToContact from "../home/LinkToContact";
-
-export default function Services() {
- return (
-
-
-
-
-
-
- Sign a support retainer for QuantStack services in our ecosystem.
-
-
-
-
- );
-}
diff --git a/src/components/services/styles.module.css b/src/components/services/styles.module.css
deleted file mode 100644
index f8b585dfc..000000000
--- a/src/components/services/styles.module.css
+++ /dev/null
@@ -1,7 +0,0 @@
-.h2_custom {
- color: var(--ifm-color-indigo-i1);
-}
-
-ul {
- padding-left: 20px;
-}
\ No newline at end of file
diff --git a/src/css/custom.css b/src/css/custom.css
index c062b2bb8..fa4e8d81f 100644
--- a/src/css/custom.css
+++ b/src/css/custom.css
@@ -1,12 +1,15 @@
-@import url("https://fonts.googleapis.com/css2?family=Roboto");
-@import url("https://fonts.cdnfonts.com/css/bebas-neue");
-@import url("https://fonts.cdnfonts.com/css/rubik-one");
-@import url("https://fonts.cdnfonts.com/css/roboto-flex");
-@import url("https://fonts.googleapis.com/css2?family=Dosis");
+@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;600;700;800;900&display=swap");
+@import url("https://fonts.cdnfonts.com/css/bebas-neue?display=swap");
:root {
+ /* ── Page background scene ── */
+ --bg-scene-color: #1d1d1b;
+ --bg-planet-op: 0.07;
+ --bg-graph-op: 0.11;
+ --bg-snippet-op: 0.09;
+
--ifm-color-orange-jupyter: #f37726;
- --ifm-color-blue-jupyter: #1976d2;
+ --ifm-color-blue-jupyter: #0052cc;
--ifm-color-green-xtensor: #4ecb71;
--ifm-color-grey-condaforge: #7a7865;
--ifm-color-orange-light: #fef9ec;
@@ -17,16 +20,34 @@
--ifm-text-color-on-primary-p1: #1e1c00;
--ifm-color-secondary-s1: #a0c9ff;
- --ifm-color-secondary-s2: #002646;
+ --ifm-color-secondary-s2: #0A0E2E;
+ --ifm-color-secondary-s3: #00497F;
+
--ifm-color-neutral-n1: #605e58;
--ifm-color-neutral-n2: #371300;
+ --ifm-color-neutral-n3: #c8c8c7;
+
+ --ifm-color-accent-yellow: #F5E53B;
+ --ifm-color-accent-red: #E8462A;
+
+ --ifm-shadow-card: 0px 2px 12px rgba(160, 140, 40, 0.15);
+ --ifm-shadow-dialog: 0 8px 16px rgba(0, 0, 0, 0.2);
+ --ifm-overlay-background: rgba(0, 0, 0, 0.3);
--ifm-text-color: var(--ifm-color-primary-p2);
- --ifm-background-color: white;
+ --ifm-background-color: var(--ifm-bg-neutral);
+
+ /* Semantic background roles */
+ --ifm-bg-neutral: #ffffff; /* default reading surface */
+ --ifm-bg-brand: #ffffff; /* yellow dropped — white throughout */
+ --ifm-bg-emphasis: var(--ifm-color-secondary-s2); /* CTA / strong contrast — navy */
+ --ifm-bg-light-blue: #edf2fb; /* subtle blue tint — section alternation */
+ --ifm-bg-light-grey: #f5f5f3; /* neutral grey — section alternation */
+
/* footer */
- --ifm-background-color-footer: var(--ifm-color-primary-p1);
+ --ifm-background-color-footer: #f5f5f3;
--ifm-text-color-footer: black;
/*popup overlay*/
@@ -41,10 +62,7 @@
/*Font families */
--ifm-font-family-roboto: "Roboto";
- --ifm-font-family-roboto-flex: "Roboto Flex";
- --ifm-font-family-bebas-neue: "Bebas Neue";
- --ifm-font-family-rubik-one: "Rubik One";
- --ifm-font-family-dosis: "Dosis";
+ --ifm-font-family-display: "Bebas Neue";
/* Spacing for margins and paddings */
--ifm-spacing-none: 0px;
@@ -61,6 +79,10 @@
--ifm-spacing-6xl: 144px;
--ifm-spacing-7xl: 240px;
--ifm-spacing-8xl: 400px;
+
+ --ifm-navbar-item-padding-horizontal: 2px;
+
+ --ifm-content-width: 1200px;
}
.flex-full-centered {
@@ -86,10 +108,6 @@
padding: 0;
}
-.row-reverse {
- flex-direction: column-reverse;
-}
-
ul {
padding-left: 0;
margin-left: 0;
@@ -148,13 +166,6 @@ ul {
color: var(--ifm-text-color-footer);
}
-.footer-astronaut {
- display: flex;
- width: 35px;
- height: 35px;
- padding: 10px;
-}
-
@media (min-width: 1440px) {
.container {
max-width: none;
@@ -163,48 +174,25 @@ ul {
/****** Class that are specific for smaller screens*/
@media (max-width: 996px) {
- .main-container-with-margins {
- margin-left: 42px;
- margin-right: 42px;
- }
-
- .upper-container-with-margin-top {
- margin-top: var(--ifm-spacing-2xl);
- }
-
- .row-with-margin-top {
- margin-top: var(--ifm-spacing-xl);
- }
-
- .row-with-margin-bottom {
- margin-bottom: var(--ifm-spacing-xl);
- }
-
- .row-with-margins {
- margin: var(--ifm-spacing-xl) 0;
- }
- .col {
- padding: 0;
- }
-
h1 {
color: var(--ifm-text-color-main-title);
- font-family: var(--ifm-font-family-bebas-neue);
- font-size: 32px;
+ font-family: var(--ifm-font-family-display);
+ font-size: 44px;
font-style: normal;
- font-weight: 600;
- line-height: 150%; /* 36px */
- letter-spacing: 1.056px;
+ font-weight: 900;
+ line-height: 110%;
+ letter-spacing: 0;
text-align: center;
padding: 0;
}
h2 {
- font-family: var(--ifm-font-family-bebas-neue);
- font-size: 24px;
+ font-family: var(--ifm-font-family-display);
+ font-size: 36px;
font-style: normal;
- font-weight: bolder;
- line-height: 150%;
+ font-weight: 800;
+ line-height: 115%;
+ letter-spacing: 0;
text-align: center;
}
@@ -223,102 +211,50 @@ ul {
margin-left: 24px;
}
- .blue-banner-container {
- font-family: var(--ifm-font-family-roboto);
- font-size: 16px;
- font-weight: 500;
- color: var(--ifm-color-secondary-s2);
- padding: var(--ifm-spacing-2xl) var(--ifm-spacing-lg) 0
- var(--ifm-spacing-lg);
- background-color: var(--ifm-color-secondary-s1);
- line-height: 20px;
- letter-spacing: 0.1px;
- text-align: center;
- }
-
- .blue-banner-header {
- text-align: center;
- font-family: var(--ifm-font-family-bebas-neue);
- font-size: 32px;
- font-style: normal;
- font-weight: 600;
- line-height: 150%;
- letter-spacing: 2.112px;
- background-color: var(--ifm-color-secondary-s1);
- color: var(--ifm-color-secondary-s2);
- }
-
.link-to-button {
- width: 258px;
- height: 56px;
- font-family: var(--ifm-font-family-roboto);
- border-radius: 35px;
- background: var(--ifm-color-secondary-s2);
- color: white;
- font-size: 16px;
- font-style: normal;
- font-weight: 600;
- line-height: 150%;
- letter-spacing: -0.176px;
- padding: 16px 36px;
- border: none;
- text-align: center;
margin-top: var(--ifm-spacing-lg);
margin-bottom: var(--ifm-spacing-lg);
}
-
- .link-box {
- height: 59px;
- width: auto;
- display: flex;
- align-items: center;
- justify-content: center;
- }
}
-/****** Class that are specific to larger screens*/
-@media (min-width: 996px) {
- .main-container-with-margins {
- margin-left: 96px;
- margin-right: 96px;
- display: flex;
- justify-content: center;
+/* Tablet range: overrides phone sizes for wider mobile viewports. */
+@media (max-width: 996px) and (min-width: 600px) {
+ body h1 {
+ font-size: 56px;
}
- .upper-container-with-margin-top {
- margin-top: var(--ifm-spacing-6xl);
- }
-
- .row-with-margin-top {
- margin-top: var(--ifm-spacing-2xl);
- }
-
- .row-with-margin-bottom {
- margin-bottom: var(--ifm-spacing-2xl);
+ body h2 {
+ font-size: 42px;
}
- .row-with-margins {
- margin: var(--ifm-spacing-2xl) 0;
+ body p {
+ font-size: 16px;
+ line-height: 24px;
}
+}
+/****** Class that are specific to larger screens*/
+@media (min-width: 996px) {
h1 {
color: var(--ifm-color-primary-p2);
- font-family: var(--ifm-font-family-bebas-neue);
- font-size: var(--ifm-font-size-main-title);
+ font-family: var(--ifm-font-family-display);
+ font-size: 64px;
font-style: normal;
- font-weight: 800;
- line-height: 150%;
- letter-spacing: 2.112px;
+ font-weight: 900;
+ line-height: 110%;
+ letter-spacing: 0;
text-align: start;
- padding: 8px 36px 8px 20px;
+ padding: 0;
+ margin: var(--ifm-spacing-md) 0;
}
h2 {
- font-family: var(--ifm-font-family-bebas-neue);
- font-size: var(--ifm-font-size-secondary-title);
+ font-family: var(--ifm-font-family-display);
+ font-size: 40px;
font-style: normal;
- font-weight: bolder;
- line-height: 150%;
+ font-weight: 800;
+ line-height: 115%;
+ letter-spacing: 0;
text-align: start;
}
@@ -327,155 +263,98 @@ ul {
font-size: var(--ifm-font-size-normal);
font-style: normal;
letter-spacing: 0.25px;
- text-align: justify;
- }
-
- .blue-banner-container {
- text-align: center;
- font-family: var(--ifm-font-family-roboto);
- font-size: 28px;
- font-style: normal;
- font-weight: 500;
- line-height: 150%;
- background-color: var(--ifm-color-secondary-s1);
- color: var(--ifm-color-secondary-s2);
- padding: var(--ifm-spacing-2xl) var(--ifm-spacing-4xl) 0
- var(--ifm-spacing-4xl);
- }
-
- .blue-banner-header {
- text-align: center;
- font-family: var(--ifm-font-family-bebas-neue);
- font-size: 48px;
- font-style: normal;
- font-weight: 600;
- line-height: 150%;
- letter-spacing: 2.112px;
- background-color: var(--ifm-color-secondary-s1);
- color: var(--ifm-color-secondary-s2);
- margin-bottom: var(--ifm-spacing-2xl);
+ text-align: left;
}
.link-to-button {
- width: 258px;
- height: 56px;
- font-family: var(--ifm-font-family-roboto);
- border-radius: 35px;
- background: var(--ifm-color-secondary-s2);
- color: white;
- font-size: 16px;
- font-style: normal;
- font-weight: 600;
- line-height: 150%;
- letter-spacing: -0.176px;
- padding: 16px 36px;
- border: none;
- text-align: center;
margin-top: var(--ifm-spacing-2xl);
margin-bottom: var(--ifm-spacing-2xl);
}
-
- .link-box {
- height: 59px;
- width: auto;
- display: flex;
- align-items: center;
- justify-content: center;
- }
-}
-/***********************************************************/
-
-.social-media-links {
- margin-left: var(--ifm-spacing-3xl);
- text-align: start;
}
-.spacing-none {
- height: var(--ifm-spacing-none);
-}
-
-.spacing-2xs {
- height: var(--ifm-spacing-2xs);
-}
-
-.spacing-xs {
- height: var(--ifm-spacing-xs);
-}
-
-.spacing-sm {
- height: var(--ifm-spacing-sm);
-}
-
-.spacing-md {
- height: var(--ifm-spacing-md);
-}
+/***********************************************************/
-.spacing-lg {
- height: var(--ifm-spacing-lg);
+/* Headings inside dark sections need explicit white */
+[class*="section_dark"] h1,
+[class*="section_dark"] h2,
+[class*="section_dark"] h3 {
+ color: white;
}
-.spacing-xl {
- height: var(--ifm-spacing-xl);
+/* Single-word red accent inside headings for energy */
+.highlight {
+ color: var(--ifm-color-accent-red);
}
-.spacing-2xl {
- height: var(--ifm-spacing-2xl);
+/* Punchy blue tagline used in page header sections */
+.page-tagline {
+ color: var(--ifm-color-blue-jupyter);
+ font-weight: 700;
+ padding: 0;
}
-.spacing-3xl {
- height: var(--ifm-spacing-3xl);
+/* BD-style red accent bar below section headings */
+.page-content h2::after {
+ content: '';
+ display: block;
+ width: 36px;
+ height: 3px;
+ background: var(--ifm-color-accent-red);
+ margin-top: 10px;
+ clip-path: polygon(3px 0%, 100% 0%, calc(100% - 3px) 100%, 0% 100%);
}
-.spacing-4xl {
- height: var(--ifm-spacing-4xl);
+.page-content h2.text--center::after {
+ margin-left: auto;
+ margin-right: auto;
}
-.spacing-5xl {
- height: var(--ifm-spacing-5xl);
+@media (max-width: 996px) {
+ .page-content h2::after {
+ margin-left: auto;
+ margin-right: auto;
+ }
}
-.spacing-6xl {
- height: var(--ifm-spacing-6xl);
+/* No red bar on dark-background sections */
+[class*="section_dark"] .page-content h2::after {
+ display: none;
}
-.spacing-7xl {
- height: var(--ifm-spacing-7xl);
-}
-.spacing-8xl {
- height: var(--ifm-spacing-8xl);
-}
+/***********************************************************/
.link-to-button {
- width: 258px;
- height: 56px;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: auto;
font-family: var(--ifm-font-family-roboto);
border-radius: 35px;
background: var(--ifm-color-secondary-s2);
color: white;
- font-size: 16px;
+ font-size: 15px;
font-style: normal;
- font-weight: 600;
- line-height: 150%;
- letter-spacing: -0.176px;
- padding: 16px 36px;
+ font-weight: 700;
+ letter-spacing: 0.5px;
+ padding: 14px 36px;
border: none;
text-align: center;
- margin-top: var(--ifm-spacing-2xl);
- margin-bottom: var(--ifm-spacing-2xl);
+ cursor: pointer;
+ transition: transform 0.15s ease, box-shadow 0.15s ease;
+ text-decoration: none;
}
-.link-box {
- height: 59px;
- width: auto;
- display: flex;
- align-items: center;
- justify-content: center;
+.link-to-button:hover {
+ color: white;
+ transform: translateY(-2px);
+ box-shadow: 0 8px 24px rgba(10, 14, 46, 0.35);
+ text-decoration: none;
}
-.social-media-links {
- margin-left: var(--ifm-spacing-3xl);
- text-align: start;
+.link-to-button:active {
+ transform: translateY(0);
+ box-shadow: none;
}
/*
@@ -492,14 +371,20 @@ a {
a:hover,
/* We need to (re)override some of the infima rules to have proper states on
navbar links, table of contents, and docs sidebar links, respectively */
-a.navbar__link:hover, /* Top bar navigation links */
-a.table-of-contents__link:hover, /*Right sidebar links (table of contents) */
-a[class^="sidebarItemLink"]:hover /* The docs sidebar links do not have its own class */ {
+a.navbar__link:hover,
+/* Top bar navigation links */
+a.table-of-contents__link:hover,
+/*Right sidebar links (table of contents) */
+a[class^="sidebarItemLink"]:hover
+
+/* The docs sidebar links do not have its own class */
+ {
/*text-decoration: underline;
text-decoration-thickness: var(--pydata-link-hover-decoration-thickness);
text-decoration-skip-ink: none;
text-decoration-skip: none;*/
}
+
a:active,
a.navbar__link:active,
a.table-of-contents__link:active,
@@ -509,13 +394,15 @@ a[class^="sidebarItemLink"]:active {
/* In some cases, we override the underlines because there are other elements that
already report the state (e.g. borders, background colors, etc) */
-a[class^="sidebarItemLink"][aria-current="page"], /* No underline if this is the current page */
+a[class^="sidebarItemLink"][aria-current="page"],
+/* No underline if this is the current page */
a.navbar__link,
.navbar-sidebar__item,
.menu a,
.navbar__items--right a,
.pagination-nav__link,
-a.card, /* These cards are used in index-like documentation pages */
+a.card,
+/* These cards are used in index-like documentation pages */
a.card:hover {
text-decoration: none;
}
@@ -525,9 +412,10 @@ so they are already assumed to be clickable anyway */
.pagination-nav__link:active,
a.card:active,
a.menu__link:active {
- background: white;
+ background: var(--ifm-bg-neutral);
color: #000;
}
+
[data-theme="dark"] .pagination-nav__link:active,
[data-theme="dark"] a.card:active,
[data-theme="dark"] a.menu__link:active {
@@ -544,30 +432,157 @@ a.menu__link:active {
transform: scale(1);
}
-.contact {
+
+
+/* Scroll-adaptive navbar */
+.navbar {
+ transition: background-color 0.25s ease, box-shadow 0.25s ease;
+ background-color: var(--ifm-navbar-background-color);
+}
+
+html[data-bg-dark] {
+ --bg-scene-color: #ffffff;
+ --bg-planet-op: 0.10;
+ --bg-graph-op: 0.15;
+ --bg-snippet-op: 0.13;
+}
+
+html:not([data-navbar-scrolled]) .navbar {
+ background-color: transparent !important;
+ box-shadow: none !important;
+}
+
+html[data-navbar-scrolled] .navbar {
+ background-color: var(--ifm-bg-neutral) !important;
+ box-shadow: 0 1px 6px rgba(0, 0, 0, 0.08) !important;
+}
+
+/* Home page at top: dark links over white hero */
+html[data-navbar-home-top] .navbar__link,
+html[data-navbar-home-top] .custom_navbar_item {
+ color: var(--ifm-color-primary-p2);
+}
+
+html[data-navbar-home-top] .custom_navbar_item:hover {
background-color: var(--ifm-color-primary-p1);
- color: var(--ifm-color-text-on-primary-p1);
- border: transparent;
- border-width: 2px;
- border-radius: 4px;
- font-weight: bolder;
+ color: var(--ifm-color-primary-p2);
}
-.contact:hover {
- background-color: white;
- border: solid;
- border-width: 2px;
- border-radius: 4px;
- border-color: var(--ifm-color-primary-p80);
- font-style: normal;
+html[data-navbar-home-top] .navbar__link:hover {
+ color: var(--ifm-color-primary-p2);
+}
+
+/* Dark-hero pages (e.g. /notebooklink/): white links over dark section */
+html[data-navbar-dark-top] .navbar__link,
+html[data-navbar-dark-top] .custom_navbar_item {
+ color: white;
+}
+
+html[data-navbar-dark-top] .custom_navbar_item:hover {
+ background-color: var(--ifm-color-primary-p1);
+ color: var(--ifm-color-primary-p2);
+}
+
+html[data-navbar-dark-top] .navbar__link:hover {
+ color: var(--ifm-color-primary-p1);
+}
+
+html[data-navbar-dark-top] .github-icon,
+html[data-navbar-dark-top] .linkedin-icon,
+html[data-navbar-dark-top] .bluesky-icon,
+html[data-navbar-dark-top] .mastodon-icon,
+html[data-navbar-dark-top] .rss-circle-icon {
+ filter: invert(1);
+}
+
+html[data-navbar-dark-top] .navbar__toggle {
+ color: white;
+}
+
+/* Sidebar opens over a light background — reset dark-top overrides */
+html[data-navbar-dark-top] .navbar-sidebar a {
+ color: var(--ifm-color-primary-p2) !important;
+}
+
+html[data-navbar-dark-top] .navbar-sidebar a:hover {
+ color: black !important;
+}
+
+html[data-navbar-dark-top] .navbar-sidebar .navbar__logo img {
+ filter: invert(1);
+}
+
+html[data-navbar-dark-top] .navbar-sidebar .github-icon,
+html[data-navbar-dark-top] .navbar-sidebar .linkedin-icon,
+html[data-navbar-dark-top] .navbar-sidebar .bluesky-icon,
+html[data-navbar-dark-top] .navbar-sidebar .mastodon-icon,
+html[data-navbar-dark-top] .navbar-sidebar .rss-circle-icon {
+ filter: none;
+}
+
+.navbar__inner {
+ position: relative;
+}
+
+.navbar__inner .navbar__brand {
+ position: absolute;
+ left: 0;
+ top: 50%;
+ transform: translateY(-50%);
+}
+
+.theme-layout-navbar-left {
+ flex: 1;
+ justify-content: center;
+}
+
+@media (max-width: 996px) {
+ .theme-layout-navbar-left {
+ justify-content: flex-end;
+ }
+}
+
+.theme-layout-navbar-right {
+ position: absolute;
+ right: 0;
+ top: 50%;
+ transform: translateY(-50%);
+}
+
+/* At 997–1300px: switch to left-aligned to avoid overlap */
+@media (max-width: 1300px) and (min-width: 997px) {
+ .navbar__inner .navbar__brand {
+ position: static;
+ transform: none;
+ }
+
+ .theme-layout-navbar-left {
+ justify-content: flex-start;
+ }
+
+ .theme-layout-navbar-right {
+ position: static;
+ transform: none;
+ }
+
+ .navbar_hide_mid {
+ display: none;
+ }
+}
+
+/* Tighten item padding at narrower intermediate widths */
+@media (max-width: 1150px) and (min-width: 997px) {
+ .custom_navbar_item {
+ padding: 6px 8px;
+ }
}
.custom_navbar_item {
font-family: var(--ifm-font-family-roboto);
- width: 117px;
height: 36px;
padding: 6px 14px;
text-align: center;
+ white-space: nowrap;
}
.custom_navbar_item:hover {
@@ -576,16 +591,51 @@ a.menu__link:active {
border-radius: 4px;
}
-.navbar__link:hover {
+.navbar_notebooklink {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 14px;
+ font-weight: 700;
+ letter-spacing: 0.3px;
+ padding: 6px 14px;
+ border: 2px solid var(--ifm-color-accent-red);
+ border-radius: 4px;
+ color: var(--ifm-color-accent-red) !important;
+ white-space: nowrap;
+ transition: background-color 0.15s ease, color 0.15s ease;
+ margin-right: var(--ifm-spacing-sm);
+}
+
+.navbar_notebooklink:hover {
+ background-color: var(--ifm-color-accent-red) !important;
+ color: white !important;
+ text-decoration: none;
+}
+
+html[data-navbar-dark-top] .navbar_notebooklink {
+ border-color: var(--ifm-color-accent-yellow);
+ color: var(--ifm-color-accent-yellow) !important;
+}
+
+html[data-navbar-dark-top] .navbar_notebooklink:hover {
+ background-color: var(--ifm-color-accent-yellow) !important;
+ color: var(--ifm-color-primary-p2) !important;
+}
+
+html[data-navbar-scrolled] .navbar__link:hover,
+html:not([data-navbar-home-top]) .navbar__link:hover {
color: black;
}
-.astronaut-footer {
- background: url(@site/static/img/quantstack/astronaut-footer.svg);
+.rss-circle-icon:hover {
+ opacity: 0.6;
+}
+
+.rss-circle-icon:before {
+ background: url(@site/static/img/socialmedias/RSS.svg);
content: "";
display: flex;
- height: 240px;
- width: 240px;
+ height: 32px;
+ width: 32px;
background-repeat: no-repeat;
}
@@ -597,8 +647,8 @@ a.menu__link:active {
background: url(@site/static/img/socialmedias/GH.svg);
content: "";
display: flex;
- height: 36px;
- width: 37px;
+ height: 32px;
+ width: 32px;
background-repeat: no-repeat;
}
@@ -607,24 +657,37 @@ a.menu__link:active {
}
.linkedin-icon:before {
- background: url(../../static/img/socialmedias/LinkedIn.svg);
+ background: url(@site/static/img/socialmedias/LinkedIn.svg);
content: "";
display: flex;
- height: 36px;
- width: 37px;
+ height: 32px;
+ width: 32px;
background-repeat: no-repeat;
}
-.x-icon:hover {
+.bluesky-icon:hover {
opacity: 0.6;
}
-.x-icon:before {
- background: url(../../static/img/socialmedias/X.svg);
+.bluesky-icon:before {
+ background: url(@site/static/img/socialmedias/Bluesky.svg);
content: "";
display: flex;
- height: 36px;
- width: 37px;
+ height: 32px;
+ width: 32px;
+ background-repeat: no-repeat;
+}
+
+.mastodon-icon:hover {
+ opacity: 0.6;
+}
+
+.mastodon-icon:before {
+ background: url(@site/static/img/socialmedias/Mastodon.svg);
+ content: "";
+ display: flex;
+ height: 32px;
+ width: 32px;
background-repeat: no-repeat;
}
@@ -638,20 +701,17 @@ a.menu__link:active {
border: 0px solid;
}
-.cards-list {
- list-style-type: none;
- padding: 0;
- margin: 0;
-}
-
-ul.row {
- margin: 0;
- padding: 0;
+.page-content {
+ max-width: var(--ifm-content-width);
+ width: 100%;
+ margin: 0 auto;
+ padding-left: var(--ifm-spacing-2xl);
+ padding-right: var(--ifm-spacing-2xl);
}
-.projects-list {
- list-style-type: none;
- padding: none;
- margin-left: 0;
- width: 100%;
+@media (max-width: 996px) {
+ .page-content {
+ padding-left: var(--ifm-spacing-lg);
+ padding-right: var(--ifm-spacing-lg);
+ }
}
diff --git a/src/pages/about.tsx b/src/pages/about.tsx
deleted file mode 100644
index aa64f34a8..000000000
--- a/src/pages/about.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import Layout from "@theme/Layout";
-import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
-import {About} from "../components/about";
-import BrowserOnly from "@docusaurus/BrowserOnly";
-import Footer from "../components/footer/Footer";
-
-export default function AboutPage(): JSX.Element {
- const { siteConfig } = useDocusaurusContext();
- return (
-
- {() => }
-
-
- );
-}
diff --git a/src/pages/about/AfshinDarian.tsx b/src/pages/about/AfshinDarian.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/AfshinDarian.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/AlexisPlacet.tsx b/src/pages/about/AlexisPlacet.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/AlexisPlacet.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/AnastasiiaSliusar.tsx b/src/pages/about/AnastasiiaSliusar.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/AnastasiiaSliusar.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/AndreasTrawoger.tsx b/src/pages/about/AndreasTrawoger.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/AndreasTrawoger.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/AntoinePitrou.tsx b/src/pages/about/AntoinePitrou.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/AntoinePitrou.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/AntoineProuvost.tsx b/src/pages/about/AntoineProuvost.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/AntoineProuvost.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/AnutoshBhat.tsx b/src/pages/about/AnutoshBhat.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/AnutoshBhat.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/ArjunVerma.tsx b/src/pages/about/ArjunVerma.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/ArjunVerma.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/DavidBrochart.tsx b/src/pages/about/DavidBrochart.tsx
new file mode 100644
index 000000000..1bb891810
--- /dev/null
+++ b/src/pages/about/DavidBrochart.tsx
@@ -0,0 +1,6 @@
+import React from 'react';
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/DenisaCheciu.tsx b/src/pages/about/DenisaCheciu.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/DenisaCheciu.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/FlorenceHaudin.tsx b/src/pages/about/FlorenceHaudin.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/FlorenceHaudin.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/GabrielaVives.tsx b/src/pages/about/GabrielaVives.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/GabrielaVives.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/GregMooney.tsx b/src/pages/about/GregMooney.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/GregMooney.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/HindMontassif.tsx b/src/pages/about/HindMontassif.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/HindMontassif.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/IanThomas.tsx b/src/pages/about/IanThomas.tsx
new file mode 100644
index 000000000..1af83ec9b
--- /dev/null
+++ b/src/pages/about/IanThomas.tsx
@@ -0,0 +1,8 @@
+import React from 'react';
+import Layout from '@theme/Layout';
+import { useHistory, useLocation} from '@docusaurus/router';
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/IsabelParedes.tsx b/src/pages/about/IsabelParedes.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/IsabelParedes.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/JeremyTuloup.tsx b/src/pages/about/JeremyTuloup.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/JeremyTuloup.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/JoelLamotte.tsx b/src/pages/about/JoelLamotte.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/JoelLamotte.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/JohanMabille.tsx b/src/pages/about/JohanMabille.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/JohanMabille.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/JulienJerphanion.tsx b/src/pages/about/JulienJerphanion.tsx
new file mode 100644
index 000000000..1af83ec9b
--- /dev/null
+++ b/src/pages/about/JulienJerphanion.tsx
@@ -0,0 +1,8 @@
+import React from 'react';
+import Layout from '@theme/Layout';
+import { useHistory, useLocation} from '@docusaurus/router';
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/LeDucTrung.tsx b/src/pages/about/LeDucTrung.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/LeDucTrung.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/MarionChaffaut.tsx b/src/pages/about/MarionChaffaut.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/MarionChaffaut.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/MartinRenou.tsx b/src/pages/about/MartinRenou.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/MartinRenou.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/MatthiasMeschede.tsx b/src/pages/about/MatthiasMeschede.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/MatthiasMeschede.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/MeriemBenIsmail.tsx b/src/pages/about/MeriemBenIsmail.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/MeriemBenIsmail.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/NicolasBrichet.tsx b/src/pages/about/NicolasBrichet.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/NicolasBrichet.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/OlivierGiorgis.tsx b/src/pages/about/OlivierGiorgis.tsx
new file mode 100644
index 000000000..174c05f8c
--- /dev/null
+++ b/src/pages/about/OlivierGiorgis.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ;
+}
diff --git a/src/pages/about/RaulCumplido.tsx b/src/pages/about/RaulCumplido.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/RaulCumplido.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/RomainMenegaux.tsx b/src/pages/about/RomainMenegaux.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/RomainMenegaux.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/SandrinePataut.tsx b/src/pages/about/SandrinePataut.tsx
new file mode 100644
index 000000000..7a63b27a3
--- /dev/null
+++ b/src/pages/about/SandrinePataut.tsx
@@ -0,0 +1,7 @@
+import React from 'react';
+import Layout from '@theme/Layout';
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/SergeGuelton.tsx b/src/pages/about/SergeGuelton.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/SergeGuelton.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/SylvainCorlay.tsx b/src/pages/about/SylvainCorlay.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/SylvainCorlay.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/components/about/Team/Alexis.md b/src/pages/about/Team/Alexis.md
similarity index 100%
rename from src/components/about/Team/Alexis.md
rename to src/pages/about/Team/Alexis.md
diff --git a/src/components/about/Team/Anastasiia.md b/src/pages/about/Team/Anastasiia.md
similarity index 100%
rename from src/components/about/Team/Anastasiia.md
rename to src/pages/about/Team/Anastasiia.md
diff --git a/src/components/about/Team/Andreas.md b/src/pages/about/Team/Andreas.md
similarity index 100%
rename from src/components/about/Team/Andreas.md
rename to src/pages/about/Team/Andreas.md
diff --git a/src/components/about/Team/Antoine.md b/src/pages/about/Team/Antoine.md
similarity index 100%
rename from src/components/about/Team/Antoine.md
rename to src/pages/about/Team/Antoine.md
diff --git a/src/pages/about/Team/AntoinePrv.md b/src/pages/about/Team/AntoinePrv.md
new file mode 100644
index 000000000..d73ef441b
--- /dev/null
+++ b/src/pages/about/Team/AntoinePrv.md
@@ -0,0 +1,8 @@
+Antoine is a Scientific Software Engineer at Quantstack where he led devlopment efforts on the
+[Mamba](https://mamba.readthedocs.io/) package manager, as well as on the
+[Xeus-Octave](https://xeus-octave.readthedocs.io) Jupyter kernel and
+[Xtensor](https://xtensor.readthedocs.io/).
+He obtained a Ph.D. in combinatorial optimization and machine learning from École Polytechnique
+de Montréal in 2021 where he worked at the interplay of deep learning and operations research.
+During that time, he developed [Ecole](https://www.ecole.ai) a mixed Python/C++ library to ease the
+research on the use of machine learning methods for decision making inside mathematical solvers.
diff --git a/src/components/about/Team/Anutosh.md b/src/pages/about/Team/Anutosh.md
similarity index 100%
rename from src/components/about/Team/Anutosh.md
rename to src/pages/about/Team/Anutosh.md
diff --git a/src/components/about/Team/Arjun.md b/src/pages/about/Team/Arjun.md
similarity index 69%
rename from src/components/about/Team/Arjun.md
rename to src/pages/about/Team/Arjun.md
index a3d019bea..0fa34af25 100644
--- a/src/components/about/Team/Arjun.md
+++ b/src/pages/about/Team/Arjun.md
@@ -1,6 +1,6 @@
-Arjun is a Scientific Software Development Intern at QuantStack.
+Arjun is a Scientific Software Developer at QuantStack.
-He is currently a final-year student at the University of Delhi, India, pursuing his Bachelors of Technology degree with a major in Information Technology.
+He graduated with a Bachelor of Technology in Information Technology from the University of Delhi, India.
He is very passionate about open source & open science. In the past he has been a contributor, maintainer & mentor at PyBaMM & other open-source projects. Additionally he has also been a Software Developer at Development Monitors LLC, Arlington VA where he had been involved in the core development of some World Bank funded GIS projects.
diff --git a/src/components/about/Team/Darian.md b/src/pages/about/Team/Darian.md
similarity index 100%
rename from src/components/about/Team/Darian.md
rename to src/pages/about/Team/Darian.md
diff --git a/src/components/about/Team/David.md b/src/pages/about/Team/David.md
similarity index 100%
rename from src/components/about/Team/David.md
rename to src/pages/about/Team/David.md
diff --git a/src/components/about/Team/Denisa.md b/src/pages/about/Team/Denisa.md
similarity index 100%
rename from src/components/about/Team/Denisa.md
rename to src/pages/about/Team/Denisa.md
diff --git a/src/components/about/Team/Fanny.md b/src/pages/about/Team/Fanny.md
similarity index 100%
rename from src/components/about/Team/Fanny.md
rename to src/pages/about/Team/Fanny.md
diff --git a/src/pages/about/Team/Florence.md b/src/pages/about/Team/Florence.md
new file mode 100644
index 000000000..674f50c37
--- /dev/null
+++ b/src/pages/about/Team/Florence.md
@@ -0,0 +1,5 @@
+Florence is a Scientific Software Engineer at QuantStack.
+
+She is a contributor to the Jupyter Project, with a particular focus on JupyterLab core and on developing custom extensions such as jupyterlab-theme-editor .
+
+Before joining QuantStack, she worked as a research scientist or engineer in several academic laboratories as well as in an engineering company.
\ No newline at end of file
diff --git a/src/components/about/Team/Gabriela.md b/src/pages/about/Team/Gabriela.md
similarity index 86%
rename from src/components/about/Team/Gabriela.md
rename to src/pages/about/Team/Gabriela.md
index 129bc8971..905c30c89 100644
--- a/src/components/about/Team/Gabriela.md
+++ b/src/pages/about/Team/Gabriela.md
@@ -1 +1 @@
-Gabriela Vives is a User Experience Researcher and Designer, passionate about working in scientific domains. She first graduated with master degrees in nuclear energy and cognitive science. After working for research, she decided to continue her studies and graduated in Human-Computer Interactions. Prior to QuantStack, Gabriela worked as a User Experience Designer at Schlumberger for 4 years, conducting user research and creating user-centered interfaces for geoscience software.
+Gabriela Vives is a User Experience Researcher and Designer, passionate about working in scientific domains. She first graduated with master degrees in nuclear energy and Cognitive Science. After working for research, she decided to continue her studies and graduated in Human-Computer Interactions. Prior to QuantStack, Gabriela worked as a User Experience Designer at Schlumberger for 4 years, conducting user research and creating user-centered interfaces for geoscience software.
diff --git a/src/components/about/Team/Greg.md b/src/pages/about/Team/Greg.md
similarity index 100%
rename from src/components/about/Team/Greg.md
rename to src/pages/about/Team/Greg.md
diff --git a/src/components/about/Team/Hind.md b/src/pages/about/Team/Hind.md
similarity index 100%
rename from src/components/about/Team/Hind.md
rename to src/pages/about/Team/Hind.md
diff --git a/src/pages/about/Team/Ian.md b/src/pages/about/Team/Ian.md
new file mode 100644
index 000000000..e91e7ccfd
--- /dev/null
+++ b/src/pages/about/Team/Ian.md
@@ -0,0 +1,9 @@
+Ian Thomas is a Scientific Software Developer at QuantStack. He holds a BA in Physics from Oxford University and PhD in ocean modelling from the University of Southampton.
+
+He has particular interest in data analysis and visualization, leaning towards solving mathematical and geometric problems.
+
+Ian has many years' experience as an open-source contributor. He is a core maintainer of the visualization libraries
+Matplotlib and Bokeh ,
+and the lead maintainer of ContourPy , a Python/C++ library for calculating contours.
+
+At QuantStack Ian is involved throughout the Jupyter stack, from kernels and widgets through to JupyterLite.
diff --git a/src/components/about/Team/Isabel.md b/src/pages/about/Team/Isabel.md
similarity index 100%
rename from src/components/about/Team/Isabel.md
rename to src/pages/about/Team/Isabel.md
diff --git a/src/components/about/Team/Jeremy.md b/src/pages/about/Team/Jeremy.md
similarity index 100%
rename from src/components/about/Team/Jeremy.md
rename to src/pages/about/Team/Jeremy.md
diff --git a/src/components/about/Team/Joel.md b/src/pages/about/Team/Joel.md
similarity index 100%
rename from src/components/about/Team/Joel.md
rename to src/pages/about/Team/Joel.md
diff --git a/src/pages/about/Team/Johan.md b/src/pages/about/Team/Johan.md
new file mode 100644
index 000000000..14082d5c3
--- /dev/null
+++ b/src/pages/about/Team/Johan.md
@@ -0,0 +1,10 @@
+
+Johan Mabille is a Technical Director specialized in high-performance computing in C++.
+He holds a master's degree in computer science from Centrale-Supelec.
+As an open source developer, Johan coauthored xtensor , xeus , and xsimd .
+
+At QuantStack, Johan oversees the development and maintenance of mamba and the Jupyter Xeus project.
+
+Johan has also made significant contributions to JupyterLab .
+
+Prior to joining QuantStack, Johan worked as a quant developer at HSBC.
diff --git a/src/components/about/Team/Julien.md b/src/pages/about/Team/Julien.md
similarity index 100%
rename from src/components/about/Team/Julien.md
rename to src/pages/about/Team/Julien.md
diff --git a/src/pages/about/Team/Marion.md b/src/pages/about/Team/Marion.md
new file mode 100644
index 000000000..728fc3d4f
--- /dev/null
+++ b/src/pages/about/Team/Marion.md
@@ -0,0 +1,3 @@
+Marion Chaffaut is Chief Financial Officer at QuantStack. She holds degrees from EMLYON and Paris-Nanterre.
+
+Before joining QuantStack, she worked in M&A and Corporate Finance roles for investment banking, large corporates, and startups. She has a strong interest in Tech.
\ No newline at end of file
diff --git a/src/components/about/Team/Martin.md b/src/pages/about/Team/Martin.md
similarity index 100%
rename from src/components/about/Team/Martin.md
rename to src/pages/about/Team/Martin.md
diff --git a/src/pages/about/Team/Matthias.md b/src/pages/about/Team/Matthias.md
new file mode 100644
index 000000000..a07eef627
--- /dev/null
+++ b/src/pages/about/Team/Matthias.md
@@ -0,0 +1,23 @@
+Matthias serves as Chief Operating Officer at QuantStack,
+overseeing project initiation, requirement gathering, solution design,
+sales, and operations.
+
+With a background in Physics and Geophysics, he developed an interest in
+numerical computing, data management, and open-source software during his
+academic research. After completing his PhD and postdoctoral work, he
+transitioned to professional software development.
+
+Throughout his 15-year career, Matthias has worked with many leading IT
+companies, gaining extensive experience across academic and industry
+settings. His professional experience encompasses developing software in
+diverse environments, from startup products to large enterprise systems,
+including requirement gathering, solution design, and project management. He
+has successfully won competitive contracts and led teams in delivering
+complex technological solutions.
+
+With expertise in scientific and functional programming, Matthias is an
+active contributor to various open-source ecosystems, including Python,
+Haskell, and NixOS. He has been instrumental in organizing significant
+community programs and events, as well as developing underlying funding
+strategies. His professional profile demonstrates a unique blend of
+technical proficiency and strategic business development expertise.
diff --git a/src/pages/about/Team/Meriem.md b/src/pages/about/Team/Meriem.md
new file mode 100644
index 000000000..23e027bae
--- /dev/null
+++ b/src/pages/about/Team/Meriem.md
@@ -0,0 +1,7 @@
+Meriem Ben Ismail is a Scientific Software Engineer at QuantStack.
+
+She graduated from the National Institute of Applied Sciences and Technology in Tunisia (INSAT) with a software engineering diploma in 2024.
+
+At QuantStack, she has contributed to the Jupyter ecosystem, particularly in collaborative tools, alongside various other projects.
+
+Her interests lie in Software Development, DevOps, and creating efficient tools for developers and scientists.
\ No newline at end of file
diff --git a/src/components/about/Team/Nicolas.md b/src/pages/about/Team/Nicolas.md
similarity index 100%
rename from src/components/about/Team/Nicolas.md
rename to src/pages/about/Team/Nicolas.md
diff --git a/src/pages/about/Team/Olivier.md b/src/pages/about/Team/Olivier.md
new file mode 100644
index 000000000..4141d9ce0
--- /dev/null
+++ b/src/pages/about/Team/Olivier.md
@@ -0,0 +1,5 @@
+Olivier Giorgis is a Scientific Software Developer at QuantStack. He obtained a Master degree in
+Statistics, computer science and digital techniques at Claude Bernard Lyon 1 University.
+
+Before joining Quanstack, Oliver developed scientific code at several companies in scientific fields
+such as molecular chemistry, image processing, and energy.
diff --git a/src/pages/about/Team/Raul.md b/src/pages/about/Team/Raul.md
new file mode 100644
index 000000000..30701a0fd
--- /dev/null
+++ b/src/pages/about/Team/Raul.md
@@ -0,0 +1,3 @@
+Raúl Cumplido is a Scientific Software Developer at QuantStack. He holds a Telecommunications Engineering Degree from the Universitat Politècnica de Catalunya (UPC) and a Master's Degree on Project Management and Design.
+
+Raúl is a maintainer of the Apache Arrow project, a member of the Project Management Committee (PMC), and the Release Manager for the project. He has contributed to several other Open Source projects and initiated the official Spanish translation for the Python documentation. He has also organized multiple conferences, such as EuroPython and PyCon ES, and served as the Python Barcelona meetup organizer. Before joining QuantStack, he worked as a Senior Software Engineer for Voltron Data, YouGov, Crunch.io and Telefonica.
diff --git a/src/components/about/Team/Romain.md b/src/pages/about/Team/Romain.md
similarity index 100%
rename from src/components/about/Team/Romain.md
rename to src/pages/about/Team/Romain.md
diff --git a/src/components/about/Team/Sandrine.md b/src/pages/about/Team/Sandrine.md
similarity index 80%
rename from src/components/about/Team/Sandrine.md
rename to src/pages/about/Team/Sandrine.md
index a7a88ced3..ccef5dd82 100644
--- a/src/components/about/Team/Sandrine.md
+++ b/src/pages/about/Team/Sandrine.md
@@ -2,4 +2,4 @@ Sandrine is a Scientific Software Engineer at QuantStack.
After studying Mathematics, she taught in France and in the UK. She then moved to Data Science and worked in insurance and finance companies.
-She also organises PyData Meetups and conferences.
\ No newline at end of file
+She also organizes PyData Meetups and conferences.
\ No newline at end of file
diff --git a/src/components/about/Team/Serge.md b/src/pages/about/Team/Serge.md
similarity index 100%
rename from src/components/about/Team/Serge.md
rename to src/pages/about/Team/Serge.md
diff --git a/src/pages/about/Team/Sylvain.md b/src/pages/about/Team/Sylvain.md
new file mode 100644
index 000000000..fa3e317fa
--- /dev/null
+++ b/src/pages/about/Team/Sylvain.md
@@ -0,0 +1,6 @@
+Sylvain Corlay is the founder and CEO of QuantStack.
+
+As an open-source developer, Sylvain is active in the scientific computing ecosystem, particularly within the Jupyter project, as well as the conda-forge and xtensor projects. In 2018, he and the other Jupyter leadership members were awarded the ACM Software System Award.
+
+Beyond QuantStack, Sylvain is involved in the community. He served as a board member of the NumFOCUS Foundation from 2018 to 2024, as the vice-chair of JupyterCon 2020, and General Chair of JupyterCon 2023 in Paris. He has coordinated the PyData Paris community since 2017, both as the organizer of the meetup group and as co-organizer of the annual conference in 2024 and 2025.
+
diff --git a/src/components/about/Team/Thorsten.md b/src/pages/about/Team/Thorsten.md
similarity index 100%
rename from src/components/about/Team/Thorsten.md
rename to src/pages/about/Team/Thorsten.md
diff --git a/src/pages/about/Team/Trung.md b/src/pages/about/Team/Trung.md
new file mode 100644
index 000000000..800f17b38
--- /dev/null
+++ b/src/pages/about/Team/Trung.md
@@ -0,0 +1,6 @@
+Le Duc Trung is a Technical Director at QuantStack.
+He holds a PhD in computational mechanics from Université Pierre-et-Marie-Curie (France).
+
+At QuantStack, Trung works on several projects within the Jupyter ecosystem, from the main projects like JupyterLab, Voilà, and ipywidgets to various JupyterLab extensions and widgets.
+
+Before joining QuantStack, Trung worked as a research engineer at Mines ParisTech, CADLM, and Safran Group.
\ No newline at end of file
diff --git a/src/pages/about/Team/Yahia.md b/src/pages/about/Team/Yahia.md
new file mode 100644
index 000000000..6e079125f
--- /dev/null
+++ b/src/pages/about/Team/Yahia.md
@@ -0,0 +1,5 @@
+Yahia is a Scientific Software Developer at Quantstack.
+
+He graduated with an engineering degree from IMT Atlantique where he developed a passion for contributing to open-source projects.
+
+He first joined QuantStack as an intern where he worked on the Jupyter Robotics ecosystem by developing new features and improving the user experience of various Jupyter extensions such as JupyterLab-URDF, JupyterCAD, JupyterCAD-URDF and JupyterCAD-FreeCAD.
\ No newline at end of file
diff --git a/src/pages/about/Team/_team.ts b/src/pages/about/Team/_team.ts
new file mode 100644
index 000000000..b00723090
--- /dev/null
+++ b/src/pages/about/Team/_team.ts
@@ -0,0 +1,584 @@
+import AlexisMD from "@site/src/pages/about/Team/Alexis.md";
+import AlexisAvatarUrl from "@site/static/img/avatars/Alexis.png";
+import AnastasiiaMD from "@site/src/pages/about/Team/Anastasiia.md";
+import AnastasiiaAvatarUrl from "@site/static/img/avatars/Anastasiia.png";
+import AndreasMD from "@site/src/pages/about/Team/Andreas.md";
+import AndreasAvatarUrl from "@site/static/img/avatars/Andreas.png";
+import AntoineMD from "@site/src/pages/about/Team/Antoine.md";
+import AntoineAvatarUrl from "@site/static/img/avatars/Antoine2.png";
+import AntoinePrvMD from "@site/src/pages/about/Team/AntoinePrv.md";
+import AntoinePrvAvatarUrl from "@site/static/img/avatars/AntoinePrv.png";
+import AnutoshMD from "@site/src/pages/about/Team/Anutosh.md";
+import AnutoshAvatarUrl from "@site/static/img/avatars/Anutosh.png";
+import ArjunMD from "@site/src/pages/about/Team/Arjun.md";
+import ArjunAvatarUrl from "@site/static/img/avatars/Arjun.png";
+import DavidMD from "@site/src/pages/about/Team/David.md";
+import DavidAvatarUrl from "@site/static/img/avatars/David.png";
+import DarianMD from "@site/src/pages/about/Team/Darian.md";
+import DarianAvatarUrl from "@site/static/img/avatars/Darian.png";
+import DenisaMD from "@site/src/pages/about/Team/Denisa.md";
+import DenisaAvatarUrl from "@site/static/img/avatars/Denisa.png";
+import FlorenceMD from "@site/src/pages/about/Team/Florence.md";
+import FlorenceAvatarUrl from "@site/static/img/avatars/Florence.png";
+import GabrielaMD from "@site/src/pages/about/Team/Gabriela.md";
+import GabrielaAvatarUrl from "@site/static/img/avatars/Gabriela.png";
+import GregMD from "@site/src/pages/about/Team/Greg.md";
+import GregAvatarUrl from "@site/static/img/avatars/Greg.png";
+import HindMD from "@site/src/pages/about/Team/Hind.md";
+import HindAvatarUrl from "@site/static/img/avatars/Hind.png";
+import IanMD from "@site/src/pages/about/Team/Ian.md";
+import IanAvatarUrl from "@site/static/img/avatars/Ian.png";
+import IsabelMD from "@site/src/pages/about/Team/Isabel.md";
+import IsabelAvatarUrl from "@site/static/img/avatars/Isabel.png";
+import JeremyMD from "@site/src/pages/about/Team/Jeremy.md";
+import JeremyAvatarUrl from "@site/static/img/avatars/Jeremy.png";
+import JoelMD from "@site/src/pages/about/Team/Joel.md";
+import JoelAvatarUrl from "@site/static/img/avatars/Joel.png";
+import JohanMD from "@site/src/pages/about/Team/Johan.md";
+import JohanAvatarUrl from "@site/static/img/avatars/Johan.png";
+import JulienMD from "@site/src/pages/about/Team/Julien.md";
+import JulienAvatarUrl from "@site/static/img/avatars/Julien.png";
+import MarionMD from "@site/src/pages/about/Team/Marion.md";
+import MarionAvatarUrl from "@site/static/img/avatars/Marion.png";
+import MartinMD from "@site/src/pages/about/Team/Martin.md";
+import MartinAvatarUrl from "@site/static/img/avatars/Martin.png";
+import MatthiasMD from "@site/src/pages/about/Team/Matthias.md";
+import MatthiasAvatarUrl from "@site/static/img/avatars/Matthias.png";
+import MeriemMD from "@site/src/pages/about/Team/Meriem.md";
+import MeriemAvatarUrl from "@site/static/img/avatars/Meriem.png";
+import NicolasMD from "@site/src/pages/about/Team/Nicolas.md";
+import NicolasAvatarUrl from "@site/static/img/avatars/Nicolas.png";
+import OlivierMD from "@site/src/pages/about/Team/Olivier.md";
+import OlivierAvatarUrl from "@site/static/img/avatars/Olivier.png";
+import RaulMD from "@site/src/pages/about/Team/Raul.md";
+import RaulAvatarUrl from "@site/static/img/avatars/Raul.png";
+import RomainMD from "@site/src/pages/about/Team/Romain.md";
+import RomainAvatarUrl from "@site/static/img/avatars/Romain.png";
+import SandrineMD from "@site/src/pages/about/Team/Sandrine.md";
+import SandrineAvatarUrl from "@site/static/img/avatars/Sandrine.png";
+import SergeMD from "@site/src/pages/about/Team/Serge.md";
+import SergeAvatarUrl from "@site/static/img/avatars/Serge.png";
+import SylvainMD from "@site/src/pages/about/Team/Sylvain.md";
+import SylvainAvatarUrl from "@site/static/img/avatars/Sylvain.png";
+import ThorstenMD from "@site/src/pages/about/Team/Thorsten.md";
+import ThorstenAvatarUrl from "@site/static/img/avatars/Thorsten.png";
+import TrungMD from "@site/src/pages/about/Team/Trung.md";
+import TrungAvatarUrl from "@site/static/img/avatars/Trung.png";
+import YahiaMD from "@site/src/pages/about/Team/Yahia.md";
+import YahiaAvatarUrl from "@site/static/img/avatars/Yahia.png";
+
+export const teams = {
+ coreTeam: [
+ {
+ completeName: "Thorsten Beier",
+ pageName: "ThorstenBeier",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/DerThorsten",
+ LinkedInLink: "https://www.linkedin.com/in/thorsten-beier-95b121189/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@derthorsten",
+ avatarUrl: ThorstenAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: ThorstenMD,
+ },
+ {
+ completeName: " Andreas Trawöger",
+ pageName: "AndreasTrawoger",
+ position: "DevOps Engineer",
+ GitHubLink: "https://github.com/atrawog",
+ LinkedInLink: "",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@atrawog",
+ avatarUrl: AndreasAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: AndreasMD,
+ },
+ {
+ completeName: "Denisa Checiu",
+ pageName: "DenisaCheciu",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/DenisaCG",
+ LinkedInLink: "https://www.linkedin.com/in/denisa-checiu-georgiana/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "DenisaCheciu",
+ avatarUrl: DenisaAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "coreTeam",
+ BioComponent: DenisaMD,
+ },
+ {
+ completeName: "Joël Lamotte",
+ pageName: "JoelLamotte",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/Klaim",
+ LinkedInLink: "https://www.linkedin.com/in/a-jo%C3%ABl-lamotte-a5b09b85/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@Klaim",
+ avatarUrl: JoelAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: JoelMD,
+ },
+ {
+ completeName: "Florence Haudin",
+ pageName: "FlorenceHaudin",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/HaudinFlorence",
+ LinkedInLink: "https://www.linkedin.com/in/florence-haudin-fr/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@HaudinFlorence",
+ avatarUrl: FlorenceAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "coreTeam",
+ BioComponent: FlorenceMD,
+ },
+ {
+ completeName: "Nicolas Brichet",
+ pageName: "NicolasBrichet",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/brichet",
+ LinkedInLink: "https://www.linkedin.com/in/nicolas-brichet-a26369150/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@brichet",
+ avatarUrl: NicolasAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "coreTeam",
+ BioComponent: NicolasMD,
+ },
+ {
+ completeName: "Isabel Paredes",
+ pageName: "IsabelParedes",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/IsabelParedes",
+ LinkedInLink: "https://www.linkedin.com/in/isabel-paredes/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@IsabelParedes",
+ avatarUrl: IsabelAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "coreTeam",
+ BioComponent: IsabelMD,
+ },
+ {
+ completeName: "Gabriela Vives",
+ pageName: "GabrielaVives",
+ position: "User Experience Researcher and Designer",
+ GitHubLink: "https://github.com/GabrielaVives",
+ LinkedInLink: "https://www.linkedin.com/in/gabriela-vives-831ba853/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@GabrielaVives",
+ avatarUrl: GabrielaAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: GabrielaMD,
+ },
+ {
+ completeName: "Hind Montassif",
+ pageName: "HindMontassif",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/Hind-M",
+ LinkedInLink: "https://www.linkedin.com/in/hindmontassif/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@Hind-M",
+ avatarUrl: HindAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: HindMD,
+ },
+ {
+ completeName: "Julien Jerphanion",
+ pageName: "JulienJerphanion",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/jjerphan",
+ LinkedInLink: "https://www.linkedin.com/in/jjerphan/",
+ BlueskyLink: "https://bsky.app/profile/jjerphan.xyz",
+ MastodonLink: "https://fosstodon.org/@jjerphan",
+ GitHubName: "@jjerphan",
+ avatarUrl: JulienAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: JulienMD,
+ },
+ {
+ completeName: "Anutosh Bhat",
+ pageName: "AnutoshBhat",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/anutosh491",
+ LinkedInLink: "https://www.linkedin.com/in/anutosh-bhat-66ba961a8/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@anutosh491",
+ avatarUrl: AnutoshAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: AnutoshMD,
+ },
+ {
+ completeName: "Greg Mooney",
+ pageName: "GregMooney",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/gjmooney",
+ LinkedInLink: "https://www.linkedin.com/in/gjmooney/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@gjmooney",
+ avatarUrl: GregAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "coreTeam",
+ BioComponent: GregMD,
+ },
+ {
+ completeName: "Ian Thomas",
+ pageName: "IanThomas",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/ianthomas23",
+ LinkedInLink: "https://www.linkedin.com/in/ian-thomas-796814240/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@ianthomas23",
+ avatarUrl: IanAvatarUrl,
+ distinctionTitle: ["OpenUK Honours List 2025"],
+ distinctionLink: ["https://openuk.uk/honours/"],
+ subTeamName: "coreTeam",
+ BioComponent: IanMD,
+ },
+ {
+ completeName: "Meriem Ben Ismail",
+ pageName: "MeriemBenIsmail",
+ position: " Scientific Software Developer",
+ GitHubLink: "https://github.com/Meriem-BenIsmail",
+ LinkedInLink: "https://www.linkedin.com/in/meriem-ben-ismail-163042230/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@Meriem-BenIsmail",
+ avatarUrl: MeriemAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: MeriemMD,
+ },
+ {
+ completeName: "Alexis Placet",
+ pageName: "AlexisPlacet",
+ position: " Scientific Software Developer",
+ GitHubLink: "https://github.com/Alex-PLACET",
+ LinkedInLink: "https://www.linkedin.com/in/alexisplacet/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@Alex-PLACET",
+ avatarUrl: AlexisAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: AlexisMD,
+ },
+ {
+ completeName: "Anastasiia Sliusar",
+ pageName: "AnastasiiaSliusar",
+ position: " Scientific Software Developer",
+ GitHubLink: "https://github.com/AnastasiaSliusar",
+ LinkedInLink: "https://www.linkedin.com/in/anastasiiasliusar-bellis/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@AnastasiaSliusar",
+ avatarUrl: AnastasiiaAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: AnastasiiaMD,
+ },
+ {
+ completeName: "Arjun Verma",
+ pageName: "ArjunVerma",
+ position: " Scientific Software Developer",
+ GitHubLink: "https://github.com/arjxn-py",
+ LinkedInLink: "https://www.linkedin.com/in/arjun-verma-758608226/",
+ BlueskyLink: "https://bsky.app/profile/arjxn-py.bsky.social",
+ MastodonLink: "https://mastodon.social/@arjxnpy",
+ GitHubName: "@arjxn-py",
+ avatarUrl: ArjunAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: ArjunMD,
+ },
+ {
+ completeName: "Sandrine Pataut",
+ pageName: "SandrinePataut",
+ position: " Scientific Software Developer",
+ GitHubLink: "https://github.com/SandrineP",
+ LinkedInLink: "https://www.linkedin.com/in/sandrinepataut/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@SandrineP",
+ avatarUrl: SandrineAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: SandrineMD,
+ },
+ {
+ completeName: "Raúl Cumplido",
+ pageName: "RaulCumplido",
+ position: " Scientific Software Developer",
+ GitHubLink: "https://github.com/raulcd",
+ LinkedInLink: "https://www.linkedin.com/in/raulcumplido/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@raulcd",
+ avatarUrl: RaulAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: RaulMD,
+ },
+ {
+ completeName: "Antoine Prouvost",
+ pageName: "AntoineProuvost",
+ position: " Scientific Software Developer",
+ GitHubLink: "https://github.com/AntoinePrv",
+ LinkedInLink: "https://www.linkedin.com/in/antoine-prouvost-0667b6a4/",
+ BlueskyLink: "https://bsky.app/profile/antoineprv.bsky.social",
+ MastodonLink: "",
+ GitHubName: "@AntoinePrv",
+ avatarUrl: AntoinePrvAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: AntoinePrvMD,
+ },
+ {
+ completeName: "Yahia Heni",
+ pageName: "YahiaHeni",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/Yahiewi",
+ LinkedInLink: "https://www.linkedin.com/in/yahia-heni/",
+ GitHubName: "@Yahiewi",
+ avatarUrl: YahiaAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: YahiaMD,
+ },
+ {
+ completeName: "Olivier Giorgis",
+ pageName: "OlivierGiorgis",
+ position: "Scientific software developer",
+ GitHubLink: "https://github.com/djangoliv",
+ GitHubName: "@djangoliv",
+ avatarUrl: OlivierAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: OlivierMD,
+ },
+ ],
+
+ QSCollaboratorsTeam: [
+ {
+ completeName: "Johan Mabille",
+ pageName: "JohanMabille",
+ position: "Technical Director",
+ GitHubLink: "https://github.com/JohanMabille",
+ LinkedInLink: "https://www.linkedin.com/in/johan-mabille/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@JohanMabille",
+ avatarUrl: JohanAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "QSCollaboratorsTeam",
+ BioComponent: JohanMD,
+ },
+ {
+ completeName: "Serge Guelton",
+ pageName: "SergeGuelton",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/serge-sans-paille",
+ LinkedInLink: "",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@serge-sans-paille",
+ avatarUrl: SergeAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "QSCollaboratorsTeam",
+ BioComponent: SergeMD,
+ },
+ {
+ completeName: "Romain Menegaux",
+ pageName: "RomainMenegaux",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/rmenegaux",
+ LinkedInLink: "https://www.linkedin.com/in/romain-menegaux-88a147134/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@trmenegaux",
+ avatarUrl: RomainAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "QSCollaboratorsTeam",
+ BioComponent: RomainMD,
+ },
+ {
+ completeName: "Antoine Pitrou",
+ pageName: "AntoinePitrou",
+ position: "Senior Software Developer",
+ GitHubLink: "https://github.com/pitrou",
+ LinkedInLink: "https://www.linkedin.com/in/pitrou/",
+ BlueskyLink: "https://bsky.app/profile/pitrou.bsky.social",
+ MastodonLink: "",
+ GitHubName: "@pitrou",
+ avatarUrl: AntoineAvatarUrl,
+ distinctionTitle: ["Python Software Foundation Fellow"],
+ distinctionLink: ["https://www.python.org/psf/fellows-roster/"],
+ subTeamName: "QSCollaboratorsTeam",
+ BioComponent: AntoineMD,
+ },
+ {
+ completeName: "Marion Chaffaut",
+ pageName: "MarionChaffaut",
+ position: "Chief Financial Officer",
+ GitHubLink: "https://github.com/MarionChaff",
+ LinkedInLink: "https://www.linkedin.com/in/marion-chaffaut/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@MarionChaff",
+ avatarUrl: MarionAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "QSCollaboratorsTeam",
+ BioComponent: MarionMD,
+ },
+ ],
+
+ leadershipTeam: [
+ {
+ completeName: "Sylvain Corlay",
+ pageName: "SylvainCorlay",
+ position: "Chief Executive Officer",
+ GitHubLink: "https://github.com/SylvainCorlay",
+ LinkedInLink: "https://www.linkedin.com/sylvaincorlay/?locale=en_US",
+ BlueskyLink: "https://bsky.app/profile/sylvaincorlay.bsky.social",
+ MastodonLink: "https://mastodon.social/@SylvainCorlay",
+ GitHubName: "@SylvainCorlay",
+ avatarUrl: SylvainAvatarUrl,
+ distinctionTitle: ["ACM Software System Award"],
+ distinctionLink: ["https://awards.acm.org/award_winners/corlay_8324973"],
+ subTeamName: "LeadershipTeam",
+ BioComponent: SylvainMD,
+ },
+ {
+ completeName: "Martin Renou",
+ pageName: "MartinRenou",
+ position: "Technical Director",
+ GitHubLink: "https://github.com/martinRenou",
+ LinkedInLink: "https://www.linkedin.com/in/martin-renou",
+ BlueskyLink: "https://bsky.app/profile/martinrenou.bsky.social",
+ MastodonLink: "",
+ GitHubName: "@martinRenou",
+ avatarUrl: MartinAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "LeadershipTeam",
+ BioComponent: MartinMD,
+ },
+ {
+ completeName: "Jeremy Tuloup",
+ pageName: "JeremyTuloup",
+ position: "Technical Director",
+ GitHubLink: "https://github.com/jtpio",
+ LinkedInLink: "https://www.linkedin.com/in/jtuloup/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@jtpio",
+ avatarUrl: JeremyAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "LeadershipTeam",
+ BioComponent: JeremyMD,
+ },
+ {
+ completeName: "Afshin Darian",
+ pageName: "AfshinDarian",
+ position: "Technical Director",
+ GitHubLink: "https://github.com/afshin",
+ LinkedInLink: "https://www.linkedin.com/in/afshindarian/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@afshin",
+ avatarUrl: DarianAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "LeadershipTeam",
+ BioComponent: DarianMD,
+ },
+ {
+ completeName: "David Brochart",
+ pageName: "DavidBrochart",
+ position: "Technical Director",
+ GitHubLink: "https://github.com/davidbrochart",
+ LinkedInLink: "https://www.linkedin.com/in/david-brochart-4208721/",
+ BlueskyLink: "https://bsky.app/profile/davidbrochart.bsky.social",
+ MastodonLink: "https://mastodon.top/@davidbrochart",
+ GitHubName: "@davidbrochart",
+ avatarUrl: DavidAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "LeadershipTeam",
+ BioComponent: DavidMD,
+ },
+ {
+ completeName: "Matthias Meschede",
+ pageName: "MatthiasMeschede",
+ position: "Chief Operating Officer",
+ GitHubLink: "https://github.com/mmesch",
+ LinkedInLink: "https://www.linkedin.com/in/mmesch/",
+ BlueskyLink: "",
+ MastodonLink: "https://fosstodon.org/@mattodon",
+ GitHubName: "@mmesch",
+ avatarUrl: MatthiasAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "LeadershipTeam",
+ BioComponent: MatthiasMD,
+ },
+ {
+ completeName: "Le Duc Trung",
+ pageName: "LeDucTrung",
+ position: "Technical Director",
+ GitHubLink: "https://github.com/trungleduc",
+ LinkedInLink: "https://www.linkedin.com/in/ductrung-le/",
+ BlueskyLink: "https://bsky.app/profile/trungleduc.bsky.social",
+ MastodonLink: "",
+ GitHubName: "@trungleduc",
+ avatarUrl: TrungAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "LeadershipTeam",
+ BioComponent: TrungMD,
+ },
+ ],
+};
diff --git a/src/pages/about/ThorstenBeier.tsx b/src/pages/about/ThorstenBeier.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/ThorstenBeier.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/YahiaHeni.tsx b/src/pages/about/YahiaHeni.tsx
new file mode 100644
index 000000000..c1fda0608
--- /dev/null
+++ b/src/pages/about/YahiaHeni.tsx
@@ -0,0 +1,5 @@
+import LargePortraitCardPage from "@site/src/components/about/LargePortraitCardPage";
+
+export default function AboutPage() {
+ return ( )
+}
\ No newline at end of file
diff --git a/src/pages/about/index.tsx b/src/pages/about/index.tsx
new file mode 100644
index 000000000..1f07bb557
--- /dev/null
+++ b/src/pages/about/index.tsx
@@ -0,0 +1,95 @@
+import Layout from "@theme/Layout";
+import BrowserOnly from "@docusaurus/BrowserOnly";
+import Footer from "@site/src/components/footer/Footer";
+import styles from "@site/src/components/about/styles.module.css";
+import { teams } from "@site/src/pages/about/Team/_team";
+import { valuesDetails } from "@site/src/components/about/valuesDetails";
+import { SmallPortraitCard } from "@site/src/components/about/SmallPortraitCard";
+import Section from "@site/src/components/layout/Section";
+import Banner from "@site/src/components/layout/Banner";
+import CardGrid from "@site/src/components/layout/CardGrid";
+import Card from "@site/src/components/layout/Card";
+import LinkToContact from "@site/src/components/LinkToContact";
+import ScrollDownCTA from "@site/src/components/layout/ScrollDownCTA";
+
+export function getTeamByPageName(name: string) {
+ for (const [, members] of Object.entries(teams)) {
+ const person = members.find((person) => person.pageName === name);
+ if (person) {
+ return members;
+ }
+ }
+ return null;
+}
+
+export function AboutContent() {
+ return (
+ <>
+
+ About us
+ ~30 engineers and researchers building the infrastructure for modern data analysis and science.
+ Founded in Paris in 2016. JupyterLab, Mamba, JupyterLite, emscripten-forge — tools reaching millions daily. Our team received several awards for our open source work.
+
+
+
+
+
+
+ Our values
+
+ {valuesDetails.map((value, index) => (
+
+
+
+
+
+ {value.name}
+
+
+
+
+
+ ))}
+
+
+
+ Meet the team
+
+ Many of us have PhDs, deep engineering or open source maintenance backgrounds. We operate as a collective of contributors — everyone on the team ships code to the projects we maintain. No passengers.
+
+ {[
+ { label: "The leadership team", members: teams.leadershipTeam },
+ { label: "The core team", members: teams.coreTeam },
+ { label: "QuantStack collaborators", members: teams.QSCollaboratorsTeam },
+ ].map(({ label, members }) => (
+
+
{label}
+
+ {members.map((person) => (
+
+
+
+ ))}
+
+
+ ))}
+
+ }
+ >
+ We're looking for researchers and engineers who want to work at the frontier of open-source data science and scientific computing — and ship code that millions of people depend on.
+
+ >
+ );
+}
+
+export default function AboutPage(): JSX.Element {
+ return (
+
+ {() => }
+
+
+ );
+}
diff --git a/src/components/blog/styles.module.css b/src/pages/blog.module.css
similarity index 51%
rename from src/components/blog/styles.module.css
rename to src/pages/blog.module.css
index 92bbe7adb..5cb341d57 100644
--- a/src/components/blog/styles.module.css
+++ b/src/pages/blog.module.css
@@ -1,81 +1,69 @@
.blogpost_image {
filter: grayscale(1);
+ height: 180px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: var(--ifm-bg-brand);
+ border-radius: 4px;
}
.blogpost_card {
height: 556px;
- width: 369px;
- border-radius: 8px;
- box-shadow: 4px 4px 18px -1px #dee0fc;
padding: var(--ifm-spacing-xl);
- background: var(--ifm-background-color-card);
-}
-
-.blogpost_card:hover {
- border: 1px solid #cbc7b1;
-}
-
-div .blogpost_header {
- color: var(--ifm-text-color);
-}
-div .blogpost_summary {
- color: var(--ifm-text-color);
-}
-
-div .blogpost_authors {
- color: var(--ifm-text-color);
-}
-
-div .blogpost_date {
- color: var(--ifm-text-color);
}
.blogpost_summary {
- font-family: var(--ifm-font-family-roboto);
font-size: 14px;
- font-style: normal;
font-weight: 300;
- line-height: 150%; /* 21px */
+ line-height: 150%;
letter-spacing: -0.154px;
text-align: justify;
margin-bottom: var(--ifm-spacing-sm);
height: 124px;
color: var(--ifm-text-color);
+ flex: 1;
}
.blogpost_header {
- color: var(---ifm-text-color);
- font-family: var(--ifm-font-family-roboto);
font-size: 16px;
- font-style: normal;
font-weight: 600;
- line-height: 150%; /* 27px */
+ line-height: 150%;
letter-spacing: -0.198px;
height: 64px;
margin: var(--ifm-spacing-xl) 0;
color: var(--ifm-text-color);
}
+.blogpost_footer {
+ margin-top: auto;
+ padding-top: var(--ifm-spacing-sm);
+}
+
.blogpost_date {
- color: var(---ifm-text-color);
- font-family: var(--ifm-font-family-roboto);
font-size: 12px;
- font-style: normal;
font-weight: 800;
line-height: 16px;
letter-spacing: -0.132px;
- text-align: left;
- color: var(--ifm-text-color);
+ color: var(--ifm-color-accent-red);
+}
+
+.blogpost_date_dot {
+ display: inline-block;
+ width: 7px;
+ height: 7px;
+ border-radius: 50%;
+ background-color: var(--ifm-color-accent-red);
+ margin-right: 6px;
+ vertical-align: middle;
+ margin-bottom: 2px;
}
.blogpost_authors {
- font-family: var(--ifm-font-family-roboto);
font-size: 12px;
- font-style: normal;
font-weight: 400;
line-height: 16px;
- text-align: left;
- color: var(--ifm-text-color);
+ color: var(--ifm-color-secondary-s3);
}
.search_input {
@@ -86,7 +74,6 @@ div .blogpost_date {
background-repeat: no-repeat;
background-position: 8px;
border-radius: 8px;
- padding: var(--ifm-spacing-xs) var(--ifm-spacing-lg) var(--ifm-spacing-xs)
- var(--ifm-spacing-lg);
+ padding: var(--ifm-spacing-xs) var(--ifm-spacing-lg) var(--ifm-spacing-xs) var(--ifm-spacing-lg);
margin: var(--ifm-spacing-lg) 0;
}
diff --git a/src/pages/blog.tsx b/src/pages/blog.tsx
index 78d9761e6..4304e9cb6 100644
--- a/src/pages/blog.tsx
+++ b/src/pages/blog.tsx
@@ -1,16 +1,34 @@
-import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
import Layout from "@theme/Layout";
-import BlogsComponent from "../components/blog";
-import blogpostDetails from "@site/src/components/blog/blogpostsDetails.json";
+import BrowserOnly from "@docusaurus/BrowserOnly";
import Footer from "../components/footer/Footer";
-
+import Section from "../components/layout/Section";
+import SectionSeparator from "../components/layout/SectionSeparator";
+import AtomOrange from "/img/icons/RSSOrange.svg";
+import BlogGrid from "../components/Blog";
+import ScrollDownCTA from "../components/layout/ScrollDownCTA";
export default function BlogPage(): JSX.Element {
- const { siteConfig } = useDocusaurusContext();
return (
-
-
+
+ Featured posts by QuantStack contributors
+ From the maintainers, at the source.
+
+ Technical deep-dives, release notes, and perspectives from the people who wrote the code. Read about the decisions, trade-offs, and discoveries that go into the tools powering modern data analysis and science. From Mamba's solver design to JupyterLab's real-time collaboration protocol — these posts come from the engineers who made the calls.
+
+
+
+
+
+
);
}
diff --git a/src/pages/blogs/Fanny.tsx b/src/pages/blogs/Fanny.tsx
index e161031c9..19b85fcc7 100644
--- a/src/pages/blogs/Fanny.tsx
+++ b/src/pages/blogs/Fanny.tsx
@@ -1,27 +1,39 @@
-import Fanny from "@site/src/components/about/Team/Fanny.md";
+import Fanny from "@site/src/pages/about/Team/Fanny.md";
import styles from "@site/src/components/about/styles.module.css";
import FannyAvatarUrl from "@site/static/img/avatars/Fanny.png";
+import Layout from "@theme/Layout";
+import Footer from "@site/src/components/footer/Footer";
export default function FannyComponent() {
return (
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+ In memoriam: Fanny Loustau-Chartez - 1983 - 2024
+
+
+
+ May 16, 2024
+
-
-
- In memoriam: Fanny Loustau-Chartez - 1983 - 2024
-
-
-
+
+
);
}
diff --git a/src/pages/blogs/_blogpostsDetails.js b/src/pages/blogs/_blogpostsDetails.js
new file mode 100644
index 000000000..11956db1c
--- /dev/null
+++ b/src/pages/blogs/_blogpostsDetails.js
@@ -0,0 +1,1418 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.blogpostsDetails = void 0;
+exports.blogpostsDetails = [
+ {
+ url: "https://notebook.link/blog/numba-in-the-browser",
+ title: "Numba in the Browser: Unlocking a New Scientific Python Stack in JupyterLite",
+ image: "/img/blogposts/resized-images/Numba-Browser.png",
+ summary: "Today, we are excited to share the first working version of the Numba JIT compiler running entirely in the browser with JupyterLite and emscripten-forge!",
+ date: "2026-08-11",
+ authors: "Anutosh Bhat",
+ imageID: "blogpost-image-157"
+ },
+ {
+ url: "https://blog.jupyter.org/jupyterlite-0-8-is-released-0c89c4200f79",
+ title: "JupyterLite 0.8 is released! 🎉",
+ image: "/img/blogposts/resized-images/JupyterLite-08.png",
+ summary: "The new 0.8 release includes a number of new features, bug fixes, and enhancements. Highlights include a shareable REPL, a refreshed loading screen, file system reliability improvements, a terminal in the browser, and an update to JupyterLab 4.6 and Notebook 7.6.",
+ date: "2026-07-10",
+ authors: "Jeremy Tuloup",
+ imageID: "blogpost-image-156"
+ },
+ {
+ url: "https://blog.jupyter.org/congratulations-distinguished-contributors-1998f468b29e",
+ title: "Congratulations, Distinguished Contributors!",
+ image: "/img/blogposts/resized-images/Congratulations-Distinguished-Contributors-2026-06.png",
+ summary: "We are proud to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2025 cohort of contributors.",
+ date: "2026-06-24",
+ authors: "Johan Mabille",
+ imageID: "blogpost-image-155"
+ },
+ {
+ url: "https://medium.com/@AntoineProuvost/improving-simd-in-apache-arrow-80-faster-parquet-column-reads-on-arm-42150ac4ec21",
+ title: "Improving SIMD in Apache Arrow: 80% faster Parquet column reads on ARM",
+ image: "img/blogposts/resized-images/Accelerating-Arrow.png",
+ summary: "We accelerated Parquet column reads on ARM by up to 80% in Apache Arrow C++, by adding support for the Scalable Vector Extension (SVE) and fixing a compiler optimization issue worth a 5x speedup on a dedicated routine.",
+ date: "2026-06-11",
+ authors: "Antoine Prouvost",
+ imageID: "blogpost-image-154"
+ },
+ {
+ url: "https://notebook.link/@DerThorsten/async-xeus-python",
+ title: "Async Xeus Python",
+ image: "/img/blogposts/resized-images/Async-Xeus-Python.png",
+ summary: "We added top-level await support to xeus-python 🚀. You can now use toplevel async code directly in notebooks without extra boilerplate and without blocking the kernel.",
+ date: "2026-06-10",
+ authors: "Thorsten Beier",
+ imageID: "blogpost-image-153"
+ },
+ {
+ url: "https://medium.com/@julien.jerphanion/sharded-repodata-support-in-mamba-ae6147d1d608",
+ title: "Sharded Repodata Support in Mamba",
+ image: "/img/blogposts/resized-images/Introducing-Mamba-2-6.png",
+ summary: "We are thrilled to introduce Mamba 2.6, the first release of the package manager with support for sharded repodata, improving perfomance by a large factor, both in execution time and memory consumption.",
+ date: "2026-04-29",
+ authors: "Julien Jerphanion",
+ imageID: "blogpost-image-152"
+ },
+ {
+ url: "https://medium.com/@QuantStack/introducing-sparrow-ipc-modern-c-20-arrow-ipc-e1690ae82b81",
+ title: "Introducing Sparrow-IPC: A modern C++ implementation of Arrow IPC",
+ image: "img/blogposts/resized-images/Introducing-Sparrow-IPC.png",
+ summary: "If you work in the world of data engineering, you are probably familiar with Apache Arrow — the universal columnar format and multi-language toolbox that has become the gold standard for fast in-memory analytics and data interchange.",
+ date: "2026-04-04",
+ authors: "Hind Montassif, Alexis Placet, Johan Mabille",
+ imageID: "blogpost-image-151"
+ },
+ {
+ url: "https://prefix.dev/blog/serverless-scientific-computing-how-notebook-link-scales-without-backends",
+ title: "How notebook.link Scales Without Backends",
+ image: "img/blogposts/resized-images/Notebook-Link-Prefix.png",
+ summary: "Notebook.link combines WebAssembly and the conda ecosystem to deliver scalable, serverless computing environments that run entirely in the browser.",
+ date: "2026-03-27",
+ authors: "Sylvain Corlay",
+ imageID: "blogpost-image-150"
+ },
+ {
+ url: "https://medium.com/@AntoineProuvost/faster-reads-for-apache-parquet-improving-integer-unpacking-f6e21ce49a85",
+ title: "Faster Reads for Apache Parquet: Improving Integer Unpacking",
+ image: "img/blogposts/resized-images/Accelerating-Arrow.png",
+ summary: "By rewriting the SIMD optimizations of a critical low-level algorithm in Arrow C++, we have been able to deliver substantial speedups when reading Parquet data, up to 60% on some Arrow benchmarks with specific column encodings.",
+ date: "2026-03-16",
+ authors: "Antoine Prouvost",
+ imageID: "blogpost-image-149"
+ },
+ {
+ url: "https://blog.jupyter.org/expanding-geospatial-workflows-in-jupytergis-stac-browsing-and-story-maps-7fb98eece82e",
+ title: "Expanding Geospatial Workflows in JupyterGIS: STAC Browsing and Story Maps",
+ image: "img/blogposts/resized-images/Story-Maps.png",
+ summary: "We introduce two new JupyterGIS features: a STAC browser integrated directly into JupyterGIS, and a new Story Map feature, which makes it possible to combine maps and narrative content in a single, interactive view.",
+ date: "2026-02-19",
+ authors: "Gregory Mooney",
+ imageID: "blogpost-image-148"
+ },
+ {
+ url: "https://blog.jupyter.org/jupyterlite-officially-joins-project-jupyter-77df24c8db80",
+ title: "JupyterLite Officially Joins Project Jupyter",
+ image: "img/blogposts/resized-images/JupyterLite-Joins-Jupyter.png",
+ summary: "We are thrilled to announce that JupyterLite is now an official part of Project Jupyter. This milestone marks a significant step forward for interactive computing in the browser and strengthens JupyterLite’s role within the Jupyter ecosystem.",
+ date: "2026-02-12",
+ authors: "Jérémy Tuloup, Sylvain Corlay, Fernando Pérez",
+ imageID: "blogpost-image-147"
+ },
+ {
+ url: "https://blog.jupyter.org/instantly-view-parquet-files-in-jupyterlab-with-arbalister-4799c28bbce7",
+ title: "Instantly view Parquet files in JupyterLab with Arbalister",
+ image: "img/blogposts/resized-images/Arbalister.png",
+ summary: "Arbalister is a JupyterLab extension that enables seamless viewing of many tabular file formats, including Parquet, CSV, Avro, ORC, and SQLite.",
+ date: "2026-01-29",
+ authors: "Antoine Prouvost",
+ imageID: "blogpost-image-146"
+ },
+ {
+ url: "https://medium.com/@QuantStack/introducing-notebook-link-the-future-of-notebook-sharing-5de900a97b4a",
+ title: "Introducing notebook.link: The Future of Notebook Sharing",
+ image: "img/blogposts/resized-images/Introducing-Notebook-Link.png",
+ summary: "We are excited to unveil notebook.link, a groundbreaking platform that simplifies sharing and running notebooks like never before.",
+ date: "2026-01-22",
+ authors: "QuantStack",
+ imageID: "blogpost-image-145"
+ },
+ {
+ url: "https://blog.jupyter.org/jupyterlite-0-7-is-released-67db4d1609ad",
+ title: "JupyterLite 0.7 is released! 🎉",
+ image: "img/blogposts/resized-images/JupyterLite-07.png",
+ summary: "The new 0.7 release includes a number of new features, bug fixes, and enhancements. This release also brings significant improvements to the user experience and new customization options for JupyterLite deployments.",
+ date: "2025-12-04",
+ authors: "Jeremy Tuloup",
+ imageID: "blogpost-image-144"
+ },
+ {
+ url: "https://thenewstack.io/teaching-a-billion-people-to-code-how-jupyterlite-is-scaling-the-impossible/",
+ title: "Teaching a Billion People to Code: How JupyterLite Is Scaling the Impossible",
+ image: "img/blogposts/resized-images/Teaching-a-Billion-People.png",
+ summary: "QuantStack, an “almost accidental startup,” is building a serverless distro of JupyterLab for Jupyter’s global adoption.",
+ date: "2025-12-01",
+ authors: "Michelle Gienow",
+ imageID: "blogpost-image-143"
+ },
+ {
+ url: "https://blog.jupyter.org/jupyterlab-4-5-and-notebook-7-5-are-available-1bcd1fa19a47",
+ title: "JupyterLab 4.5 and Notebook 7.5 are available!",
+ image: "img/blogposts/resized-images/JupyterLab-45.png",
+ summary: "JupyterLab 4.5 has been released! This new minor release of JupyterLab includes 51 new features and enhancements, 81 bug fixes, 44 maintenance tasks and 38 documentation improvements.",
+ date: "2025-11-24",
+ authors: "Jeremy Tuloup",
+ imageID: "blogpost-image-142"
+ },
+ {
+ url: "https://blog.jupyter.org/gnu-octave-meets-jupyterlite-compute-anywhere-anytime-8b033afbbcdc",
+ title: "GNU Octave Meets JupyterLite: Compute Anywhere, Anytime!",
+ image: "img/blogposts/resized-images/Octave-Lite.png",
+ summary: "We are thrilled to announce the newest member of our JupyterLite kernel ecosystem: Xeus-Octave. Xeus-Octave allows you to run GNU Octave code directly on your browser.",
+ date: "2025-10-16",
+ authors: "Isabel Paredes",
+ imageID: "blogpost-image-141"
+ },
+ {
+ url: "https://eo4society.esa.int/2025/10/16/jupytergis-breaks-through-to-the-next-level/",
+ title: "JupyterGIS breaks through to the next level",
+ image: "img/blogposts/resized-images/JupyterGIS-Next-Level.png",
+ summary: "Launched in June 2024, JupyterGIS was introduced as a collaborative, web-based GIS environment built on the JupyterLab framework. Its objective is to bring QGIS-inspired workflows into the browser…",
+ date: "2025-10-16",
+ authors: "Martin Renou, Arjun Verma, Gregory Mooney, Sylvain Corlay",
+ imageID: "blogpost-image-140"
+ },
+ {
+ url: "https://medium.com/@QuantStack/sovereign-tech-agency-invests-in-apache-arrows-future-with-quantstack-d2f84c21c2cc",
+ title: "Sovereign Tech Agency Invests in Apache Arrow’s Future with QuantStack",
+ image: "img/blogposts/resized-images/STF-Arrow.png",
+ summary: "We are thrilled to announce that the Sovereign Tech Fund is providing critical funding to sustain and improve Apache Arrow, an essential open-source project in the modern data ecosystem.",
+ date: "2025-10-07",
+ authors: "Antoine Pitrou, Raúl Cumplido",
+ imageID: "blogpost-image-139"
+ },
+ {
+ url: "https://www.open-source-ward.com/from-linux-parties-to-global-impact-an-interview-with-sylvain-corlay-founder-of-quantstack/",
+ title: "From Linux Parties to Global Impact: An Interview with Sylvain Corlay, Founder of QuantStack",
+ image: "img/blogposts/resized-images/An-Interview-with-Sylvain-Corlay.png",
+ summary: "In today’s article, we had the chance to speak with Sylvain Corlay, long-time contributor of the Jupyter project, used by millions of people worldwide, and CEO-founder of QuantStack, an open-source development company employing around thirty people.",
+ date: "2025-09-18",
+ authors: "Sylvain Corlay, Arthur Vervaet",
+ imageID: "blogpost-image-138"
+ },
+ {
+ url: "https://medium.com/@QuantStack/a-year-in-review-quantstacks-contributions-to-apache-arrow-7eba38acbcf2",
+ title: "A Year in Review: QuantStack’s Contributions to Apache Arrow",
+ image: "img/blogposts/resized-images/Arrow-a-Year-in-Review.png",
+ summary: "Since November 2024, QuantStack has been involved in the maintenance and development of Apache Arrow. We have a team of several engineers working…",
+ date: "2025-09-02",
+ authors: "Antoine Pitrou, Raúl Cumplido",
+ imageID: "blogpost-image-137"
+ },
+ {
+ url: "https://david-brochart.medium.com/create-your-own-layers-in-jupytergis-cbb995a89b16",
+ title: "Create your own layers in JupyterGIS",
+ image: "img/blogposts/resized-images/Create-layers-JupyterGIS.png",
+ summary: "JupyterGIS-tiler is a JupyterGIS extension that lets you use a notebook to process your (Xarray) data and make it available as raster tiles, so that it can be visualized in JupyterGIS.",
+ date: "2025-06-25",
+ authors: "David Brochart",
+ imageID: "blogpost-image-136"
+ },
+ {
+ url: "https://blog.jupyter.org/c-in-jupyter-interpreting-c-in-the-web-c9d93542f20b",
+ title: "C++ in Jupyter — Interpreting C++ in the Web",
+ image: "img/blogposts/resized-images/CPP-in-JupyterLite.png",
+ summary: "Scientists and engineers utilize programming languages not only to build software systems but also to drive interactive exploratory workflows. They leverage developer tools to explore and reason through problems effectively.",
+ date: "2025-06-19",
+ authors: "Anutosh Bhat, Vassil Vassilev",
+ imageID: "blogpost-image-135"
+ },
+ {
+ url: "https://blog.jupyter.org/jupyterlite-0-6-0-is-released-b4bc69bfc8f4",
+ title: "JupyterLite 0.6.0 is released! 🎉",
+ image: "img/blogposts/resized-images/JupyterLite-06.png",
+ summary: "The new 0.6.0 release includes a number of new features, bug fixes, and enhancements. This release also brings significant improvements to the user experience and new customization options for JupyterLite deployments.",
+ date: "2025-06-12",
+ authors: "Jeremy Tuloup",
+ imageID: "blogpost-image-134"
+ },
+ {
+ url: "https://blog.jupyter.org/jupyterlab-4-4-and-notebook-7-4-are-available-aca2782d4f3d",
+ title: "JupyterLab 4.4 and Notebook 7.4 are available!",
+ image: "img/blogposts/resized-images/JupyterLab-44.png",
+ summary: "JupyterLab 4.4 has been released! This new minor release of JupyterLab includes 28 new features and enhancements, 76 bug fixes, 63 maintenance tasks and 34 documentation improvements.",
+ date: "2025-05-21",
+ authors: "Jeremy Tuloup",
+ imageID: "blogpost-image-133"
+ },
+ {
+ url: "https://blog.jupyter.org/congratulations-distinguished-contributors-2504029fc5a9",
+ title: "Congratulations, Distinguished Contributors!",
+ image: "/img/blogposts/resized-images/Congratulations-Distinguished-Contributors-2025-05.png",
+ summary: "We are proud to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2024 cohort of contributors.",
+ date: "2025-05-15",
+ authors: "Johan Mabille",
+ imageID: "blogpost-image-132"
+ },
+ {
+ url: "https://david-brochart.medium.com/making-qt-collaborative-using-crdts-94c470703253",
+ title: "Making Qt collaborative using CRDTs",
+ image: "/img/blogposts/resized-images/Collaborative-Qt.png",
+ summary: "A journal on creating a collaborative application with Qt",
+ date: "2025-03-31",
+ authors: "David Brochart",
+ imageID: "blogpost-image-131"
+ },
+ {
+ url: "https://blog.jupyter.org/r-in-the-browser-announcing-our-webassembly-distribution-9450e9539ed5",
+ title: "R in the Browser: Announcing Our WebAssembly Distribution",
+ image: "/img/blogposts/resized-images/Xeus-R-Lite.png",
+ summary: "R is now available in emscripten-forge, enabling the Xeus-R kernel in JupyterLite.",
+ date: "2025-02-28",
+ authors: "Isabel Paredes",
+ imageID: "blogpost-image-130"
+ },
+ {
+ url: "https://blog.jupyter.org/real-time-collaboration-and-collaborative-editing-for-gis-workflows-with-jupyter-and-qgis-d25dbe2832a6",
+ title: "Real-time collaboration and collaborative editing for GIS workflows with Jupyter and QGIS",
+ image: "/img/blogposts/resized-images/Collaborative-GIS.png",
+ summary: "We are excited to announce JupyterGIS, a web-based, collaborative, and extensible interface for GIS, leveraging the JupyterLab application framework and integrating seamlessly with the Jupyter notebook interface.",
+ date: "2025-02-26",
+ authors: "Meriem Ben Ismail, Nicolas Brichet, David Brochart, Matt Fisher, Anne Fouilloux, Greg Mooney, Martin Renou, Arjun Verma",
+ imageID: "blogpost-image-129"
+ },
+ {
+ url: "https://medium.com/@PyDataParis/pydata-paris-2025-50ff2bf2dc39",
+ title: "PyData Paris 2025 Keynotes",
+ image: "/img/blogposts/resized-images/PyData-Paris-2025-Keynotes.png",
+ summary: "We are thrilled to announce the keynote speakers for the upcoming PyData Paris 2025, the leading gathering of the open-source data science and AI/ML community in France.",
+ date: "2025-02-19",
+ authors: "Sandrine Pataut",
+ imageID: "blogpost-image-128"
+ },
+ {
+ url: "https://blog.jupyter.org/announcing-jupytercad-3-0-d8f4b7b0a719",
+ title: "Announcing JupyterCAD 3.0",
+ image: "/img/blogposts/resized-images/Announcing-JupyterCAD-3.0.png",
+ summary: "We are thrilled to introduce JupyterCAD 3.0, the newest version of the collaborative CAD modeler designed for JupyterLab.",
+ date: "2025-02-17",
+ authors: "Arjun Verma, Trung Le, Martin Renou",
+ imageID: "blogpost-image-127"
+ },
+ {
+ url: "https://johan-mabille.medium.com/sparrow-1f23817f6696",
+ title: "Sparrow",
+ image: "/img/blogposts/resized-images/sparrow.png",
+ summary: "We are thrilled to introduce Sparrow, a new library designed to simplify the integration of Apache Arrow’s columnar format into C++ applications.",
+ date: "2025-01-31",
+ authors: "Johan Mabille, Alexis Placet, Thorsten Beier, Joël Lamotte",
+ imageID: "blogpost-image-126"
+ },
+ {
+ url: "https://blog.jupyter.org/jupyterlite-terminal-edb3f80dc1c0",
+ title: "JupyterLite Terminal",
+ image: "/img/blogposts/resized-images/Jupyterlite-Terminal.png",
+ summary: "QuantStack are delighted to announce that we have been working on a new Terminal for JupyterLite.",
+ date: "2024-11-13",
+ authors: "Ian Thomas",
+ imageID: "blogpost-image-125"
+ },
+ {
+ url: "https://blog.jupyter.org/automate-your-releases-with-the-jupyter-releaser-701e7b9841e6",
+ title: "Automate your releases with the Jupyter Releaser 🚀",
+ image: "/img/blogposts/resized-images/Automate-releases-jupyter-releaser.png",
+ summary: "Jupyter Releaser is an automation tool developed by the Jupyter team to streamline and standardize the release process across Jupyter projects.",
+ date: "2024-10-28",
+ authors: "Jeremy Tuloup",
+ imageID: "blogpost-image-124"
+ },
+ {
+ url: "https://medium.com/@QuantStack/quantstack-steps-up-to-support-apache-arrow-with-new-dedicated-team-9ddc952f20e2",
+ title: "QuantStack Steps Up to Support Apache Arrow with New Dedicated Team",
+ image: "/img/blogposts/resized-images/QuantStack-Steps-Up-to-Support-Apache-Arrow-with-New-Dedicated-Team.png",
+ summary: " We are thrilled to announce that QuantStack is starting a new team dedicated to the maintenance and development of Apache Arrow.",
+ date: "2024-10-22",
+ authors: "Sylvain Corlay",
+ imageID: "blogpost-image-123"
+ },
+ {
+ url: "https://blog.jupyter.org/interactive-mapping-with-ipyopenlayers-2b8bc93bb6c4",
+ title: "Interactive Mapping with ipyopenlayers",
+ image: "/img/blogposts/resized-images/Interactive-Mapping-with-ipyopenlayers.png",
+ summary: " In this article, we present the main features of ipyopenlayers and demonstrate how this library can transform your geospatial data into dynamic, interactive visualizations.",
+ date: "2024-09-06",
+ authors: "Nour Cheour",
+ imageID: "blogpost-image-122"
+ },
+ {
+ url: "https://blog.jupyter.org/announcing-the-2023-jupyter-distinguished-contributor-award-recipients-1b2cc4ba203f",
+ title: "Announcing the 2023 cohort of Jupyter distinguished contributors",
+ image: "/img/blogposts/resized-images/Announcing-the-2023-Jupyter-Distinguished-Contributors.png",
+ summary: "We are delighted to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2023 cohort.",
+ date: "2024-09-04",
+ authors: "Johan Mabille, on behalf of the Jupyter Distinguished Contributors",
+ imageID: "blogpost-image-121"
+ },
+ {
+ url: "https://blog.jupyter.org/ipydatagrid-is-now-part-of-project-jupyter-3b3dfb877664",
+ title: "Ipydatagrid is now part of Project Jupyter",
+ image: "/img/blogposts/resized-images/Ipydatagrid-is-now-part-of-ProjectJupyter.png",
+ summary: "Today, we are proud to announce that the ipydatagrid open source project has been incorporated into Project Jupyter as part of the Jupyter Widgets subproject.",
+ date: "2024-08-22",
+ authors: "Sylvain Corlay, on behalf of the Jupyter Widgets Council",
+ imageID: "blogpost-image-120"
+ },
+ {
+ url: "https://medium.com/@QuantStack/introducing-mamba-2-0-0e8d5c6d1d0c",
+ title: "Introducing Mamba 2.0",
+ image: "/img/blogposts/resized-images/Introducing-Mamba-2-0.png",
+ summary: "We are excited to present the first release candidate of Mamba 2.0, a significant upgrade to the mamba package manager. This update brings considerable enhancements for both users and developers, following an extensive year-long development effort.",
+ date: "2024-07-16",
+ authors: "Antoine Prouvost, Joël Lamotte, Johan Mabille, Hind Montassif",
+ imageID: "blogpost-image-119"
+ },
+ {
+ url: "https://medium.com/@QuantStack/quantstack-open-source-internship-program-049755b6d44b",
+ title: "QuantStack open-source internship program",
+ image: "/img/blogposts/resized-images/QuantStack-open-source-internship-program.png",
+ summary: "Today, we are announcing a new internship program that aims to empower a new cohort of open-source contributors and future maintainers to make an impact within our ecosystem.",
+ date: "2024-07-09",
+ authors: "Sylvain Corlay",
+ imageID: "blogpost-image-118"
+ },
+ {
+ url: "https://medium.com/@QuantStack/jupytercad-2-0-4b9c4e18d22a",
+ title: "JupyterCAD 2.0",
+ image: "/img/blogposts/resized-images/JupyterCAD-2-0.png",
+ summary: "We are thrilled to introduce JupyterCAD 2.0, the newest version of the JupyterLab-based CAD modeler.",
+ date: "2024-07-05",
+ authors: "Trung Le, Martin Renou",
+ imageID: "blogpost-image-117"
+ },
+ {
+ url: "https://blog.jupyter.org/jupytergis-d63b7adf9d0c",
+ title: "JupyterGIS",
+ image: "/img/blogposts/resized-images/JupyterGIS.png",
+ summary: "We are thrilled to announce that the European Space Agency (ESA) is funding our proposal “Real-time collaboration and collaborative editing for GIS workflows with Jupyter and QGIS.”",
+ date: "2024-06-12",
+ authors: "Sylvain Corlay, Anne Fouilloux, Monika Weissschnur",
+ imageID: "blogpost-image-116"
+ },
+ {
+ url: "https://medium.com/@SylvainCorlay/commit-cdf57415b94b",
+ title: "Commit!",
+ image: "/img/blogposts/resized-images/Commit.png",
+ summary: "Open-source projects are not just about the latest exciting updates and features, but also the principles and people that drive these projects to success. In this blog post, I reflect on the dynamics…",
+ date: "2024-05-29",
+ authors: "Sylvain Corlay",
+ imageID: "blogpost-image-115"
+ },
+ {
+ url: "/blogs/Fanny",
+ title: "In memoriam: Fanny Loustau Chartez",
+ image: "/img/blogposts/resized-images/In-memoriam-Fanny-Loustau-Chartez.jpg",
+ summary: "It is with great sadness that we announce the passing of our colleague and friend, Fanny Loustau Chartez, who served as the Chief Financial Officer of QuantStack since 2021.",
+ date: "2024-05-16",
+ authors: "Sylvain Corlay",
+ imageID: "blogpost-image-114"
+ },
+ {
+ url: "https://medium.com/@PyDataParis/announcing-pydata-paris-2024-700220accc72",
+ title: "Announcing PyData Paris 2024",
+ image: "/img/blogposts/resized-images/Announcing-PyData-Paris-2024.png",
+ summary: "We are thrilled to announce the upcoming PyData Paris 2024, the gathering of the open-source data science and AI/ML community in France. PyData Paris will take place at the Cité des Sciences from September 25 to September 26, 2024.",
+ date: "2024-03-11",
+ authors: "Sylvain Corlay",
+ imageID: "blogpost-image-113"
+ },
+ {
+ url: "https://blog.jupyter.org/meet-xeus-r-a-future-proof-jupyter-kernel-for-r-1adc5fdd09ab",
+ title: "Meet Xeus-R: a future-proof Jupyter kernel for R",
+ image: "/img/blogposts/resized-images/Meet-Xeus-R-a-future-proof-Jupyter-kernel-for-R.png",
+ summary: "Today, we, a collaborative team led by Romain François and supported by QuantStack, are thrilled to announce the initial release of Xeus-R, a future-proof Jupyter kernel for R.",
+ date: "2024-01-22",
+ authors: "Romain François",
+ imageID: "blogpost-image-112"
+ },
+ {
+ url: "https://medium.com/@QuantStack/quantstack-2023-in-review-94fea0a35520",
+ title: "QuantStack: 2023 in review",
+ image: "/img/blogposts/resized-images/QuantStack-2023-in-review.png",
+ summary: "Since QuantStack was founded in 2016, we have remained committed to releasing our work under permissive open-source licenses. Here are some highlights of the 2023 achievements. Buckle up!",
+ date: "2024-01-03",
+ authors: "Sylvain Corlay",
+ imageID: "blogpost-image-111"
+ },
+ {
+ url: "https://blog.jupyter.org/recent-keyboard-navigation-improvements-in-jupyter-4df32f97628d",
+ title: "Recent keyboard navigation improvements in Jupyter",
+ image: "/img/blogposts/resized-images/Recent-keyboard-navigation-improvements-in-Jupyter.png",
+ summary: "Upcoming versions of JupyterLab (4.1.0) and Notebook (7.1.0) will include major keyboard accessibility fixes.",
+ date: "2023-12-16",
+ authors: "Nicolas Brichet, Gabriel Fouasnon",
+ imageID: "blogpost-image-110"
+ },
+ {
+ url: "https://blog.jupyter.org/and-voici-e02367197ba2",
+ title: "And Voici!",
+ image: "/img/blogposts/resized-images/And-Voici.png",
+ summary: "Voici (meaning “here is” in French) is a novel project reshaping Jupyter-based interactive dashboards by combining Voilà and JupyterLite features. It facilitates the creation of dynamic, in-browser environments for data visualization and exploration.",
+ date: "2023-12-06",
+ authors: "Trung Duc Le, Martin Renou",
+ imageID: "blogpost-image-109"
+ },
+ {
+ url: "https://blog.jupyter.org/plug-your-application-into-the-jupyter-world-805e48918801",
+ title: "Plug your application into the Jupyter world",
+ image: "/img/blogposts/resized-images/Plug-your-application-into-the-Jupyter-world.png",
+ summary: "Kernels are a simple but powerful abstraction in the Jupyter architecture. They encapsulate language interpreters and make them accessible through a standardized interface. This is the key to…",
+ date: "2023-10-23",
+ authors: "David Brochart",
+ imageID: "blogpost-image-108"
+ },
+ {
+ url: "https://blog.jupyter.org/voil%C3%A0-0-5-0-homecoming-66f2465aa86f",
+ title: "Voilà 0.5 - Homecoming",
+ image: "/img/blogposts/resized-images/Voila-0-5-Homecoming.png",
+ summary: "Following the launch of Jupyter Notebook 7, it is now Voilà’s turn to join the JupyterLab family. In Version 0.5.0, the front-end of Voilà has been rebuilt from scratch using JupyterLab 4.0 components, just like in the case of Notebook 7.",
+ date: "2023-09-25",
+ authors: "Jeremy Tuloup, Martin Renou, Trung Duc Le",
+ imageID: "blogpost-image-107"
+ },
+ {
+ url: "https://blog.jupyter.org/announcing-jupyter-notebook-7-8d6d66126dcf",
+ title: "Announcing Jupyter Notebook 7",
+ image: "/img/blogposts/resized-images/Announcing-Jupyter-Notebook-7.jpg",
+ summary: "Jupyter Notebook 7 is the most significant release of the Jupyter Notebook in years. Some highlights of this release include real-time collaboration, interactive debugging, table of contents, theming and dark mode, internationalization, improved accessibility, compact view on mobile devices.",
+ date: "2023-07-26",
+ authors: "Jeremy Tuloup",
+ imageID: "blogpost-image-106"
+ },
+ {
+ url: "https://blog.jupyter.org/jupytercon-2023-recordings-now-live-on-youtube-17564b75a2a",
+ title: "🎉 JupyterCon 2023 recordings now live on YouTube! 🎉",
+ image: "/img/blogposts/resized-images/JupyterCon-2023-recordings-now-live-on-YouTube.png",
+ summary: "Get ready to relive the magic of JupyterCon 2023, because the long-awaited moment is finally here! The JupyterCon YouTube channel has just dropped a treasure trove of content — all the talk and keynote recordings from the most epic conference of the year.",
+ date: "2023-07-22",
+ authors: "Gayle Ollington, Sylvain Corlay",
+ imageID: "blogpost-image-105"
+ },
+ {
+ url: "https://blog.jupyter.org/a-theme-editor-for-jupyterlab-8f08ab62894d",
+ title: "A theme editor for JupyterLab",
+ image: "/img/blogposts/resized-images/A-theme-editor-for-JupyterLab.png",
+ summary: "To lower the bar for customizing JupyterLab we created a new tool providing a simple interface for tuning the JupyterLab appearance interactively.",
+ date: "2023-06-19",
+ authors: "Florence Haudin",
+ imageID: "blogpost-image-104"
+ },
+ {
+ url: "https://blog.jupyter.org/collaborative-cad-in-jupyterlab-8eb9e8f81f0",
+ title: "Collaborative CAD in JupyterLab",
+ image: "/img/blogposts/resized-images/Collaborative-CAD-in-JupyterLab.png",
+ summary: "Introducing JupyterCAD, a tool that integrates Computer-Aided Design (CAD) capabilities into JupyterLab.",
+ date: "2023-06-02",
+ authors: "Duc Trung Le, Martin Renou",
+ imageID: "blogpost-image-103"
+ },
+ {
+ url: "https://blog.jupyter.org/congratulations-distinguished-contributors-7a7b215b8bd0",
+ title: "Congratulations, Distinguished Contributors!",
+ image: "/img/blogposts/resized-images/Congratulations-Distinguished-Contributors.png",
+ summary: "We are proud to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2022 cohort of contributors.",
+ date: "2023-06-02",
+ authors: "Johan Mabille",
+ imageID: "blogpost-image-102"
+ },
+ {
+ url: "https://blog.jupyter.org/embed-interactive-itkwidgets-3d-renderings-into-jupyterlite-deployments-10eb9ea30980",
+ title: "Embed interactive itkwidgets 3D renderings into JupyterLite deployments",
+ image: "/img/blogposts/resized-images/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.png",
+ summary: "A tutorial that demonstrates a zero-server, interactive 3D rendering notebook and walks through the quick and easy configuration that can be customized to your needs.",
+ date: "2023-03-15",
+ authors: "Matt McCormick, Brianna Major, Jeremy Tuloup, Wei Ouyang, Stephen Aylward",
+ imageID: "blogpost-image-101"
+ },
+ {
+ url: "https://blog.jupyter.org/improving-the-accessibility-of-jupyter-6c695db518d3",
+ title: "Improving the accessibility of Jupyter",
+ image: "/img/blogposts/resized-images/Improving-the-accessibility-of-Jupyter.png",
+ summary: "This article presents some of the recent accessibility improvements in the Jupyter Notebook codebase.",
+ date: "2023-02-24",
+ authors: "Nicolas Brichet, Johan Mabille, Jeremy Tuloup, Frédéric Collonval, Sylvain Corlay",
+ imageID: "blogpost-image-100"
+ },
+ {
+ url: "https://blog.jupyter.org/a-jupyter-kernel-for-gnu-octave-b6d29e56341f",
+ title: "A Jupyter kernel for GNU Octave",
+ image: "/img/blogposts/resized-images/A-Jupyter-kernel-for-GNU-Octave.png",
+ summary: "We are happy to announce the xeus-octave project, a Jupyter kernel for GNU Octave. Xeus-octave was created by Giulio Girardi, recently joined by Antoine Prouvost - and has been incorporated into the Project Jupyter governance.",
+ date: "2023-01-11",
+ authors: "Giulio Girardi, Antoine Prouvost",
+ imageID: "blogpost-image-99"
+ },
+ {
+ url: "https://medium.com/@QuantStack/quantstack-2022-in-review-7d4704b1db42",
+ title: "QuantStack: 2022 in review",
+ image: "/img/blogposts/resized-images/QuantStack-2022-in-review.png",
+ summary: "2022 was an amazing year of innovation for the open-source developers at QuantStack. Developments range from major improvements to the Jupyter project to the packaging ecosystem and high-performance computing.",
+ date: "2022-12-26",
+ authors: "Sylvain Corlay",
+ imageID: "blogpost-image-98"
+ },
+ {
+ url: "https://medium.com/@AntoineProuvost/managing-conflicts-with-mamba-6a5fa10ed6a",
+ title: "Managing conflicts with Mamba",
+ image: "/img/blogposts/resized-images/Managing-conflicts-with-Mamba.png",
+ summary: "A key aspect of package management is finding a set of compatible versions of the required packages. Indeed, even in the case when few packages are explicitly required, second-order dependencies may…",
+ date: "2022-11-29",
+ authors: "Antoine Prouvost",
+ imageID: "blogpost-image-97"
+ },
+ {
+ url: "https://blog.jupyter.org/jupytercon-is-back-in-2023-90e5c25eeec9",
+ title: "JupyterCon is back in 2023",
+ image: "/img/blogposts/resized-images/JupyterCon-is-back-in-2023.png",
+ summary: "JupyterCon 2023 will be held May 10–12 (Thursday to Friday) in the city of light, Paris, France at the largest science museum in Europe, the Cité des Sciences et de l’Industrie.",
+ date: "2022-10-17",
+ authors: "Gayle Ollington",
+ imageID: "blogpost-image-96"
+ },
+ {
+ url: "https://blog.jupyter.org/accelerating-jupyterlab-68942bb8d602",
+ title: "Accelerating JupyterLab",
+ image: "/img/blogposts/resized-images/Accelerating-JupyterLab.png",
+ summary: "The next major release of JupyterLab will be significantly faster than previous versions. This was achieved both through systematic tracking of performance bugs and through significant upgrades to the Jupyter communication protocol and rendering mechanism for documents.",
+ date: "2022-09-15",
+ authors: "Frédéric Collonval, Johan Mabille, David Brochart, Afshin Darian",
+ imageID: "blogpost-image-95"
+ },
+ {
+ url: "https://blog.jupyter.org/upgrading-nbgrader-99c56ae56c47",
+ title: "Upgrading nbgrader",
+ image: "/img/blogposts/resized-images/Upgrading-nbgrader.png",
+ summary: "Project Jupyter provides a broad collection of open-source tools for interactive computing that has become ubiquitous in data science and scientific computing, and is very popular in educational…",
+ date: "2022-09-15",
+ authors: "Nicolas Brichet",
+ imageID: "blogpost-image-94"
+ },
+ {
+ url: "https://blog.jupyter.org/visual-programming-in-jupyterlab-with-blockly-7731ec3e113c",
+ title: "Visual programming in JupyterLab with Blockly",
+ image: "/img/blogposts/resized-images/Visual-programming-in-JupyterLab-with-Blockly.png",
+ summary: "When moving from block-based programming to a more classical language like Python, students often have to switch to a completely new environment. In order to provide a smooth ramp of complexity for learners, we designed a JupyterLab extension for Blockly so that Jupyter can be used from the very first steps of their learning journey.",
+ date: "2022-07-29",
+ authors: "Denisa Checiu, Carlos Herrero",
+ imageID: "blogpost-image-93"
+ },
+ {
+ url: "https://blog.jupyter.org/mamba-meets-jupyterlite-88ef49ac4dc8",
+ title: "Mamba meets JupyterLite",
+ image: "/img/blogposts/resized-images/Mamba-meets-JupyterLite.png",
+ summary: "JupyterLite is a Jupyter distribution that runs entirely in the web browser without any server components. To achieve this, all language kernels must also run in the browser. A significant benefit of…",
+ date: "2022-07-14",
+ authors: "Thorsten Beier, Martin Renou",
+ imageID: "blogpost-image-92"
+ },
+ {
+ url: "https://blog.jupyter.org/inspector-jupyterlab-404cce3e1df6",
+ title: "Inspector JupyterLab",
+ image: "/img/blogposts/resized-images/Inspector-JupyterLab.png",
+ summary: "JupyterLab provides multiple ways to improve your coding workflow: code highlighting, code completion, theming, debugger with rich variable rendering and more.",
+ date: "2022-04-11",
+ authors: "Martin Renou",
+ imageID: "blogpost-image-91"
+ },
+ {
+ url: "https://blog.pyodide.org/posts/canvas-renderer-matplotlib-in-pyodide/",
+ title: "HTML5
based renderer for Matplotlib in Pyodide",
+ image: "/img/blogposts/resized-images/HTML5--based-renderer-for-Matplotlib-in-Pyodide.png",
+ summary: "In this post, we present a new backend for Matplotlib enabling the rendering of figures in the browser by leveraging the <canvas> element. This showcases how JavaScript and Python can interact with each other, thanks to Pyodide.",
+ date: "2022-04-01",
+ authors: "Madhur Tandon",
+ imageID: "blogpost-image-90"
+ },
+ {
+ url: "https://wolfv.medium.com/the-future-of-mamba-fdf6d628b3df",
+ title: "The future of mamba",
+ image: "/img/blogposts/resized-images/The-future-of-mamba.png",
+ summary: "The recent adoption of libmamba by the conda project was a great validation of our work. Several other game-changing innovations are in the works by the mamba team. Stay tuned!",
+ date: "2022-03-01",
+ authors: "Wolf Vollprecht",
+ imageID: "blogpost-image-89"
+ },
+ {
+ url: "https://blog.jupyter.org/congratulations-distinguished-contributors-bc349fa60d68",
+ title: "Congratulations, Distinguished Contributors!",
+ image: "/img/blogposts/resized-images/Congratulations-Distinguished-Contributors.png",
+ summary: "We are proud to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2021 cohort of contributors.",
+ date: "2022-03-16",
+ authors: "Johan Mabille",
+ imageID: "blogpost-image-88"
+ },
+ {
+ url: "https://blog.jupyter.org/jupyter-everywhere-f8151c2cc6e8",
+ title: "Jupyter Everywhere",
+ image: "/img/blogposts/resized-images/Jupyter-Everywhere.jpg",
+ summary: "Easily embed a console, a notebook, or a fully-fledged IDE on any web page.",
+ date: "2022-03-15",
+ authors: "Martin Renou, Jeremy Tuloup",
+ imageID: "blogpost-image-87"
+ },
+ {
+ url: "https://medium.com/@kmathewos92/ros2-support-for-zethus-e6ecfcdb1c4c",
+ title: "ROS2 support for Zethus",
+ image: "/img/blogposts/resized-images/ROS2-support-for-Zethus.png",
+ summary: "Zethus is an Open Source library for Robot visualization in the browser. Initially developed by Rapyuta Robotics, it provides a web-based…",
+ date: "2022-02-17",
+ authors: "Kedus Mathewos",
+ imageID: "blogpost-image-86"
+ },
+ {
+ url: "https://medium.com/@QuantStack/quantstack-2021-in-review-fe5eac2e0f6d",
+ title: "QuantStack: 2021 in review",
+ image: "/img/blogposts/resized-images/QuantStack-2021-in-review.png",
+ summary: "This was a crazy year of innovation for the open-source team at QuantStack. From JupyterLab to the packaging ecosystem and high-performance computing, we made some major strides in all areas, while almost doubling the size of the team.",
+ date: "2021-12-18",
+ authors: "Sylvain Corlay",
+ imageID: "blogpost-image-85"
+ },
+ {
+ url: "https://blog.jupyter.org/jupyter-games-cda20dc15a21",
+ title: "Jupyter Games",
+ image: "/img/blogposts/resized-images/Jupyter-Games.png",
+ summary: "Making their own tiny video games can be a great way for kids to learn programming in a playful matter. While Jupyter is widely used as a scientific and educational tool, Jupyter is seldom used as a…",
+ date: "2021-12-14",
+ authors: "Thorsten Beier",
+ imageID: "blogpost-image-84"
+ },
+ {
+ url: "https://blog.jupyter.org/need-for-speed-voil%C3%A0-edition-a9e1300ab3b2",
+ title: "Need for speed: Voilà edition",
+ image: "/img/blogposts/resized-images/Need-for-speed-Voila-edition.png",
+ summary: "Voilà turns Jupyter notebooks into standalone applications without requiring any modification to the content. You want to share your content with non-technical readers? Just call Voilà with the…",
+ date: "2021-12-10",
+ authors: "Duc Trung Le",
+ imageID: "blogpost-image-83"
+ },
+ {
+ url: "https://adelsalle.medium.com/towards-a-more-secure-conda-ecosystem-5ce65a27d7d5",
+ title: "Towards a more secure conda ecosystem",
+ image: "/img/blogposts/resized-images/Towards-a-more-secure-conda-ecosystem.png",
+ summary: "Supply chain security is crucial to the overall security of package managers, which are a major attack vector of information systems. Today, we are pleased to announce that mamba has gained the…",
+ date: "2021-11-16",
+ authors: "Adrien Delsalle",
+ imageID: "blogpost-image-82"
+ },
+ {
+ url: "https://johan-mabille.medium.com/toward-a-faster-and-thinner-xsimd-9e4eef41bc17",
+ title: "Toward a faster and thinner xsimd",
+ image: "/img/blogposts/resized-images/Toward-a-faster-and-thinner-xsimd.png",
+ summary: "xsimd, the SIMD library by QuantStack, got more and more adoption in recent years. While it helped improve the library, adoption also brought new requirements. Among them was the abitility to...",
+ date: "2021-10-29",
+ authors: "Serge Guelton, Johan Mabille",
+ imageID: "blogpost-image-81"
+ },
+ {
+ url: "https://blog.jupyter.org/xeus-lite-379e96bb199d",
+ title: "Xeus-Lite",
+ image: "/img/blogposts/resized-images/Xeus-Lite.png",
+ summary: "JupyterLite is a JupyterLab distribution that runs entirely in the web browser, backed by in-browser language kernels. Xeus is C++ library for writing Jupyter kernels. In this blogpost we show how…",
+ date: "2021-10-25",
+ authors: "Thorsten Beier",
+ imageID: "blogpost-image-80"
+ },
+ {
+ url: "https://wolfv.medium.com/the-mamba-project-and-the-czi-grant-ec88fb27c25",
+ title: "The mamba project and the CZI grant",
+ image: "/img/blogposts/resized-images/The-mamba-project-and-the-CZI-grant.png",
+ summary: "For those who don't know yet: mamba is a fast, cross-platform & non-language-specific package manager widely used in the scientific space. Mamba works with conda -packages and works great in tandem…",
+ date: "2021-10-19",
+ authors: "Wolf Vollprecht",
+ imageID: "blogpost-image-79"
+ },
+ {
+ url: "https://blog.jupyter.org/looking-at-notebooks-from-a-new-perspective-bfd06797f188",
+ title: "Looking at notebooks from a new perspective",
+ image: "/img/blogposts/resized-images/Looking-at-notebooks-from-a-new-perspective.png",
+ summary: "Jupyter notebooks are a great tool for practitioners of scientific computing from the research phase of their work to the communication of their results. The interleaving of code and rich text makes…",
+ date: "2021-10-05",
+ authors: "Mariana Meireles",
+ imageID: "blogpost-image-78"
+ },
+ {
+ url: "https://blog.jupyter.org/xeus-2-0-cb460d4daed4",
+ title: "Xeus 2.0",
+ image: "/img/blogposts/resized-images/Xeus-2-0.png",
+ summary: "We have just released Xeus 2.0. This is a major release of the library. While it includes backward-incompatible changes, they are very limited and upgrading your kernels should be relatively easy…",
+ date: "2021-09-28",
+ authors: "Johan Mabille, Sylvain Corlay",
+ imageID: "blogpost-image-77"
+ },
+ {
+ url: "https://blog.jupyter.org/from-jupyter-to-the-moon-2e432df402c8",
+ title: "From Jupyter to the Moon",
+ image: "/img/blogposts/resized-images/From-Jupyter-to-the-Moon.png",
+ summary: "A key principle in Jupyter’s design is language agnosticism, and one of the main extension points of the Jupyter ecosystem is the kernel, the part of the architecture responsible for executing the…",
+ date: "2021-09-24",
+ authors: "Thorsten Beier",
+ imageID: "blogpost-image-76"
+ },
+ {
+ url: "https://blog.jupyter.org/jupyterlite-jupyter-%EF%B8%8F-webassembly-%EF%B8%8F-python-f6e2e41ab3fa",
+ title: "Jupyter ❤️ WebAssembly ❤️ Python",
+ image: "/img/blogposts/resized-images/Jupyter-WebAssembly-Python.png",
+ summary: "JupyterLite is a JupyterLab distribution that runs entirely in the web browser, backed by in-browser language kernels. JupyterLite is a reboot of several attempts at making a full static Jupyter…",
+ date: "2021-07-13",
+ authors: "Jeremy Tuloup",
+ imageID: "blogpost-image-75"
+ },
+ {
+ url: "https://wolfv.medium.com/mamba-0-15-0-475d1dca0418",
+ title: "Mamba 0.15.0",
+ image: "/img/blogposts/resized-images/Mamba-0-15-0.png",
+ summary: "We’ve just dropped one of the biggest releases of mamba (the fast conda package manager)— along with some nice improvements in libsolv! This is a quick update on some new and improved features in…",
+ date: "2021-07-09",
+ authors: "Wolf Vollprecht, Adrien Delsalle",
+ imageID: "blogpost-image-74"
+ },
+ {
+ url: "https://www.polytechnique.edu/fondation/content/le-calcul-haute-performance-au-service-de-l%E2%80%99innovation",
+ title: "Le calcul haute performance au service de l'innovation (in French)",
+ image: "/img/blogposts/resized-images/Le-calcul-haute-performance-au-service-de-l'innovation-in-French.png",
+ summary: "Led by Professor Marc Massot (Center for Applied Mathematics), the HPC@Maths initiative aims at developing a strong expertise in high-performance computing at École Polytechnique. This project is supported by the X Foundation, and by QuantStack.",
+ date: "2021-06-18",
+ authors: "Fondation École Polytechnique",
+ imageID: "blogpost-image-73"
+ },
+ {
+ url: "https://blog.jupyter.org/how-we-made-jupyter-notebooks-collaborative-with-yjs-b8dff6a9d8af",
+ title: "How we made Jupyter notebooks collaborative with Yjs",
+ image: "/img/blogposts/resized-images/How-we-made-Jupyter-notebooks-collaborative-with-Yjs.png",
+ summary: "Collaborative editing — à la Google Docs — is a feature that you still rarely find in applications. One of the few good things that came out of this pandemic is that more people seem to care about…",
+ date: "2021-06-12",
+ authors: "Kevin Jahns",
+ imageID: "blogpost-image-72"
+ },
+ {
+ url: "https://blog.jupyter.org/retrolab-a-jupyterlab-distribution-with-a-retro-look-and-feel-8096b8b223d0",
+ title: "RetroLab - A JupyterLab distribution with a retro look and feel",
+ image: "/img/blogposts/resized-images/RetroLab-A-JupyterLab-distribution-with-a-retro-look-and-feel.png",
+ summary: "RetroLab is an alternative JupyterLab distribution, built from the ground-up, providing a notebook interface with a retro look and feel. Currently at version 3.0, JupyterLab provides an advanced…",
+ date: "2021-06-27",
+ authors: "Jeremy Tuloup",
+ imageID: "blogpost-image-71"
+ },
+ {
+ url: "https://adelsalle.medium.com/rhumba-the-fast-r-distribution-is-available-on-windows-fa975b2aefa2",
+ title: "Rhumba, the fast R distribution is available on Windows",
+ image: "/img/blogposts/resized-images/Rhumba-the-fast-R-distribution-is-available-on-Windows.png",
+ summary: "A few months ago, Mariana Meireles created Rhumba, a fast R package manager and distribution leveraging the conda-forge initiative and the mamba library. Today, we’re happy to announce a new major…",
+ date: "2021-05-18",
+ authors: "Adrien Delsalle",
+ imageID: "blogpost-image-70"
+ },
+ {
+ url: "https://blog.jupyter.org/enabling-the-jupyterlab-debugger-with-ipykernel-8d7248f522b0",
+ title: "Enabling the JupyterLab Debugger with ipykernel",
+ image: "/img/blogposts/resized-images/Enabling-the-JupyterLab-Debugger-with-ipykernel.png",
+ summary: "JupyterLab 3.0 includes a visual debugger that allows to interactively set breakpoints, step into functions, and inspect variables with any Jupyter kernel that implements the Jupyter debugger…",
+ date: "2021-05-13",
+ authors: "Sylvain Corlay, Johan Mabille",
+ imageID: "blogpost-image-69"
+ },
+ {
+ url: "https://medium.com/@mari_meir/jupyter-%EF%B8%8F-%EF%B8%8F-cytoscape-e2e77be8e0f9",
+ title: "Jupyter ❤️ Cytoscape",
+ image: "/img/blogposts/resized-images/Jupyter-Cytoscape.png",
+ summary: "Cytoscape is an open source software platform for visualizing complex networks and integrating these with any type of attribute data. While the project was started in the life sciences community, it…",
+ date: "2021-05-11",
+ authors: "Mariana Meireles",
+ imageID: "blogpost-image-68"
+ },
+ {
+ url: "https://johan-mabille.medium.com/zarray-a-dynamic-expression-system-based-on-xtensor-ded69f37ff5e",
+ title: "zarray: a dynamic expression system based on xtensor",
+ image: "/img/blogposts/resized-images/zarray-a-dynamic-expression-system-based-on-xtensor.png",
+ summary: "In this article we demonstrate how we pushed xtensor one step further, implementing a dynamic expression system on top of it. xtensor is a comprehensive C++framework for multi-dimensional array…",
+ date: "2021-04-29",
+ authors: "Johan Mabille",
+ imageID: "blogpost-image-67"
+ },
+ {
+ url: "https://blog.jupyter.org/nbterm-jupyter-notebooks-in-the-terminal-6a2b55d08b70",
+ title: "nbterm: Jupyter Notebooks in the terminal",
+ image: "/img/blogposts/resized-images/nbterm-Jupyter-Notebooks-in-the-terminal.png",
+ summary: "Jupyter notebooks are mostly known for their web-based user interface, such as JupyterLab or the Classic Notebook. They offer a great user experience, allow for rich output rendering, provide…",
+ date: "2021-04-26",
+ authors: "David Brochart",
+ imageID: "blogpost-image-66"
+ },
+ {
+ url: "https://blog.jupyter.org/abracadabra-bringing-the-magics-to-xeus-python-9d17bcfacb4",
+ title: "Abracadabra! Bringing the Magics to Xeus-Python",
+ image: "/img/blogposts/resized-images/Abracadabra-Bringing-the-Magics-to-Xeus-Python.png",
+ summary: "Last year, we set ourselves to implement a visual debugger for JupyterLab. This endeavor required major developments in the JupyterLab…",
+ date: "2021-02-18",
+ authors: "Martin Renou",
+ imageID: "blogpost-image-65"
+ },
+ {
+ url: "https://medium.com/robostack/cross-platform-conda-packages-for-ros-fa1974fd1de3",
+ title: "Cross-platform Conda Packages for ROS",
+ image: "/img/blogposts/resized-images/Cross-platform-Conda-Packages-for-ROS.jpg",
+ summary: "2020 has been a busy year for the RoboStack project. We collaboratively published ros-noetic on four platforms (Windows, macOS, Linux x64 and ARM64) and revamped how ROS packages can be released on…",
+ date: "2021-02-16",
+ authors: "Wolf Vollprecht, Tobias Fischer",
+ imageID: "blogpost-image-64"
+ },
+ {
+ url: "https://blog.jupyter.org/genomic-data-representation-in-jupyter-c57a5bb518d6",
+ title: "Genomic Data representation in Jupyter",
+ image: "/img/blogposts/resized-images/Genomic-Data-representation-in-Jupyter.png",
+ summary: "If there is one thing that recent events tell us, it is that genomics is a large source of data, and that its manipulation and understanding allow for the quick development of new drugs and…",
+ date: "2021-02-08",
+ authors: "Jean-David Harrouet",
+ imageID: "blogpost-image-63"
+ },
+ {
+ url: "https://blog.jupyter.org/an-sql-solution-for-jupyter-ef4a00a0d925?postPublishedType=initial",
+ title: "An SQL Solution for Jupyter",
+ image: "/img/blogposts/resized-images/An-SQL-Solution-for-Jupyter.png",
+ summary: "A few months ago we released xeus-sqlite, a Jupyter kernel that allows users to make SQLite queries directly from the notebook. With the needs of the Jupyter data science community in mind we decided…",
+ date: "2021-02-03",
+ authors: "Mariana Meireles",
+ imageID: "blogpost-image-62"
+ },
+ {
+ url: "https://blog.jupyter.org/a-curiously-recurring-widget-library-261a65bd56fe",
+ title: "A Curiously Recurring Widget Library",
+ image: "/img/blogposts/resized-images/A-Curiously-Recurring-Widget-Library.png",
+ summary: "Diving into the implementation of xwidgets…",
+ date: "2021-01-27",
+ authors: "Sylvain Corlay",
+ imageID: "blogpost-image-61"
+ },
+ {
+ url: "https://blog.jupyter.org/robotic-process-automation-with-jupyterlab-713b5630e457",
+ title: "Robotic Process Automation with JupyterLab",
+ image: "/img/blogposts/resized-images/Robotic-Process-Automation-with-JupyterLab.png",
+ summary: "Robotic Process Automation (RPA) differs from classical automation tools in that the actions to automate can be developed by observing a user perform a task in a graphical user interface, across…",
+ date: "2021-01-18",
+ authors: "Martin Renou, Johan Mabille",
+ imageID: "blogpost-image-60"
+ },
+ {
+ url: "https://blog.jupyter.org/dashboarding-with-jupyterlab-3-789fcb1a5857",
+ title: "Dashboarding with JupyterLab 3.0",
+ image: "/img/blogposts/resized-images/Dashboarding-with-JupyterLab-3-0.png",
+ summary: "Project Jupyter offers a complete suite of open-source tools for the scientific computing community, reaching from the exploratory phase of a project to the presentation of the results. In this last…",
+ date: "2021-01-08",
+ authors: "Carlos Herrero, Jeremy Tuloup",
+ imageID: "blogpost-image-59"
+ },
+ {
+ url: "https://blog.jupyter.org/jupyterlab-3-0-is-out-4f58385e25bb",
+ title: "JupyterLab 3.0 is Released!",
+ image: "/img/blogposts/resized-images/JupyterLab-3-0-is-Released.png",
+ summary: "The 3.0 release of JupyterLab brings many new features to users and substantial improvements to the extension distribution system.",
+ date: "2021-01-05",
+ authors: "Jeremy Tuloup",
+ imageID: "blogpost-image-58"
+ },
+ {
+ url: "https://blog.llvm.org/posts/2020-12-21-interactive-cpp-for-data-science/",
+ title: "Interactive C++ for Data Science",
+ image: "/img/blogposts/resized-images/Interactive-C++-for-Data-Science.png",
+ summary: "This post will discuss some applications of Cling developed to support data science researchers. In particular, interactively probing data and interfaces makes complex libraries and complex data…",
+ date: "2020-12-23",
+ authors: "Vassil Vassilev, David Lange, Simeon Ehrig, Sylvain Corlay",
+ imageID: "blogpost-image-57"
+ },
+ {
+ url: "https://david-brochart.medium.com/xtensor-%EF%B8%8F-zarr-4f5cf25c65e5",
+ title: "Xtensor ❤️ Zarr",
+ image: "/img/blogposts/resized-images/Xtensor-Zarr.png",
+ summary: "A C++ implementation of the Zarr specification…",
+ date: "2020-12-15",
+ authors: "David Brochart",
+ imageID: "blogpost-image-56"
+ },
+ {
+ url: "https://blog.jupyter.org/a-c-backend-for-vega-lite-bd2524b247c2",
+ title: "A C++ API for Vega-Lite",
+ image: "/img/blogposts/resized-images/A-C++-API-for-Vega-Lite.png",
+ summary: "In this post, we present the first public release of XVega, a C++ library for producing Vega-Lite charts. Data science workflows differ from traditional software development in that engineers make…",
+ date: "2020-12-02",
+ authors: "Madhur Tandon",
+ imageID: "blogpost-image-55"
+ },
+ {
+ url: "https://blog.jupyter.org/ipygany-jupyter-into-the-third-dimension-29a97597fc33",
+ title: "Ipygany, Jupyter into the Third Dimension",
+ image: "/img/blogposts/resized-images/Ipygany-Jupyter-into-the-Third-Dimension.png",
+ summary: "From Paraview to Mayavi, there are multiple solutions for data analysis on 3D meshes on the desktop. Most of these tools provide high-level APIs that can be driven with a scripting language like…",
+ date: "2020-10-14",
+ authors: "Martin Renou",
+ imageID: "blogpost-image-54"
+ },
+ {
+ url: "https://medium.com/@mari_meir/rhumba-a-faster-r-distribution-d619fb93043a",
+ title: "Rhumba, a Faster R Distribution",
+ image: "/img/blogposts/resized-images/Rhumba-a-Faster-R-Distribution.png",
+ summary: "CRAN is the official package manager for the R ecosystem. Unfortunately, simple operations such as creating new environments or installing packages with it can be very time-consuming due to the fact…",
+ date: "2020-10-13",
+ authors: "Mariana Meireles",
+ imageID: "blogpost-image-53"
+ },
+ {
+ url: "https://blog.jupyter.org/the-templating-system-of-nbconvert-6-47ea781eacd2",
+ title: "The Templating System of Nbconvert 6",
+ image: "/img/blogposts/resized-images/The-Templating-System-of-Nbconvert-6.png",
+ summary: "One of the main changes in nbconvert 6 is the refactor of the template system, which should be easier to extend and build upon. In this article, we dive into the template system, and provide a…",
+ date: "2020-09-26",
+ authors: "Sylvain Corlay",
+ imageID: "blogpost-image-52"
+ },
+ {
+ url: "https://medium.com/@mari_meir/memestra-a21c0c1f362",
+ title: "Memestra!",
+ image: "/img/blogposts/resized-images/Memestra.png",
+ summary: "Modern IDE features such as interactive debugging, linting, code formatting, and refactoring tools are now available in JupyterLab, thanks to the JupyterLab-LSP extension and the recent release of…",
+ date: "2020-09-21",
+ authors: "Mariana Meireles",
+ imageID: "blogpost-image-51"
+ },
+ {
+ url: "https://medium.com/@martinRenou/real-time-rendering-of-water-caustics-59cda1d74aa",
+ title: "Real-time Rendering of Water Caustics",
+ image: "/img/blogposts/resized-images/Real-time-Rendering-of-Water-Caustics.png",
+ summary: "In this article, I present an attempt for generalizing caustics computation in real-time using WebGL and ThreeJS. The fact that it is an attempt is important, finding a solution that works well in…",
+ date: "2020-08-27",
+ authors: "Martin Renou",
+ imageID: "blogpost-image-50"
+ },
+ {
+ url: "https://blog.jupyter.org/jupyterlab-ros-3dc9dab7f421",
+ title: "JupyterLab, the Cloud Robotics Command Station",
+ image: "/img/blogposts/resized-images/JupyterLab-the-Cloud-Robotics-Command-Station.png",
+ summary: "Building the next generation of robotics cloud computing using ROS and JupyterLab",
+ date: "2020-08-11",
+ authors: "Carlos Herrero, Wolf Vollprecht",
+ imageID: "blogpost-image-49"
+ },
+ {
+ url: "https://blog.jupyter.org/slicerjupyter-a-3d-slicer-kernel-for-interactive-publications-6f2ad829f635",
+ title: "SlicerJupyter, a 3-D Slicer Kernel for Interactive Publications",
+ image: "/img/blogposts/resized-images/SlicerJupyter-a-3-D-Slicer-Kernel-for-Interactive-Publications.png",
+ summary: "Use Jupyter and 3D Slicer kernel to implement biomedical data processing workflows in a notebook.",
+ date: "2020-07-08",
+ authors: "Sylvain Corlay, Jean-Christophe Fillion-Robin, Mike Grauer, Andras Lasso, Matt MacCormick, Isaiah Norton, Steve Pieper, Martin Renou, Mike Sarahan",
+ imageID: "blogpost-image-48"
+ },
+ {
+ url: "https://medium.com/@QuantStack/open-software-packaging-for-science-61cecee7fc23",
+ title: "Open Software Packaging for Science",
+ image: "/img/blogposts/resized-images/Open-Software-Packaging-for-Science.png",
+ summary: "Modern scientific applications typically depend on a very large number of libraries written in various programming languages, ranging from Fortran to TypeScript, C, C++, Python, etc. So, we need to…",
+ date: "2020-07-19",
+ authors: "Wolf Vollprecht, Mario Buikhuizen, Marianne Corvellec, Johan Mabille, David Brochart",
+ imageID: "blogpost-image-47"
+ },
+ {
+ url: "https://blog.jupyter.org/a-jupyter-kernel-for-sqlite-9549c5dcf551",
+ title: "A Jupyter Kernel for SQLite",
+ image: "/img/blogposts/resized-images/A-Jupyter-Kernel-for-SQLite.png",
+ summary: "While it is well known in the Python scientific computing community, Jupyter is in fact a language-agnostic development environment. High-quality language kernels exist for the main languages of data…",
+ date: "2020-06-11",
+ authors: "Mariana Meireles",
+ imageID: "blogpost-image-46"
+ },
+ {
+ url: "https://blog.jupyter.org/plasma-a-learning-platform-powered-by-jupyter-1b850fcd8624",
+ title: "PLASMA, a Learning Platform Powered by Jupyter",
+ image: "/img/blogposts/resized-images/PLASMA-a-Learning-Platform-Powered-by-Jupyter.png",
+ summary: "Jupyter has been a great choice for education for many years. The Jupyter Notebook has become one of the most popular tools to conduct workshops, tutorials, and teach online classes. Recently we have…",
+ date: "2020-05-11",
+ authors: "Jeremy Tuloup",
+ imageID: "blogpost-image-45"
+ },
+ {
+ url: "https://blog.jupyter.org/interactive-graph-visualization-in-jupyter-with-ipycytoscape-a8828a54ab63",
+ title: "Interactive Graph Visualization in Jupyter with IPycytoscape",
+ image: "/img/blogposts/resized-images/Interactive-Graph-Visualization-in-Jupyter-with-IPycytoscape.png",
+ summary: "The Jupyter widgets ecosystem offers a broad variety of data visualization tools for exploratory analysis in the notebook. However, we…",
+ date: "2020-04-30",
+ authors: "Mariana Meireles",
+ imageID: "blogpost-image-44"
+ },
+ {
+ url: "https://blog.jupyter.org/a-visual-debugger-for-jupyter-914e61716559",
+ title: "A Visual Debugger for Jupyter",
+ image: "/img/blogposts/resized-images/A-Visual-Debuger-for-Jupyter.png",
+ summary: "Most of the progress made in software projects comes from incrementalism. The ability to quickly see the outcome of an execution and iterate has been one of the main reasons for the success of…",
+ date: "2020-03-25",
+ authors: "Jeremy Tuloup, Borys Palka, Johan Mabille, Martin Renou, Afshin Darian, Sylvain Corlay",
+ imageID: "blogpost-image-43"
+ },
+ {
+ url: "https://blog.jupyter.org/report-on-the-jupyter-community-workshop-on-dashboarding-14f8ad9f3c0",
+ title: "Field Report on the Jupyter Community Workshop on Dashboarding",
+ image: "/img/blogposts/resized-images/Field-Report-on-the-Jupyter-Community-Workshop-on-Dashboarding.png",
+ summary: "From June 3rd to June 6th 2019, thirty-five developers from the Jupyter community met in Paris for a four-day workshop on dashboarding with Project Jupyter. For four days, attendees worked full time…",
+ date: "2020-02-14",
+ authors: "Sylvain Corlay",
+ imageID: "blogpost-image-42"
+ },
+ {
+ url: "https://medium.com/@wolfv/introducing-scikit-geometry-ae1dccaad5fd",
+ title: "Introducing Scikit-Geometry",
+ image: "/img/blogposts/resized-images/Introducing-Scikit-Geometry.png",
+ summary: "As a robotics researcher (but also in many other fields) computations on geometric primitives are used very frequently— but it’s harder than anticipated to find the right abstractions in a nice…",
+ date: "2020-01-24",
+ authors: "Wolf Vollprecht",
+ imageID: "blogpost-image-41"
+ },
+ {
+ url: "https://medium.com/@johan.mabille/how-we-wrote-xtensor-8-n-iterators-7df77e3223f7",
+ title: "How we Wrote Xtensor (Episode 8) - Iterators",
+ image: "/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-8-Iterators.png",
+ summary: "In the previous article, we implemented the broadcasting rules so that we can compute the shape of arbitrary complex trees that involve arrays with different but compatible shapes. This is the first…",
+ date: "2020-01-07",
+ authors: "Johan Mabille",
+ imageID: "blogpost-image-40"
+ },
+ {
+ url: "https://medium.com/@wolfv/2019-in-review-d7d03fb0d17d",
+ title: "2019 in Review",
+ image: "/img/blogposts/resized-images/2019-in-Review.png",
+ summary: "This year has seen major changes in xeus and xeus-python, driven by the requirements for developing a visual debugger. We have implemented a prototype that supports the Debug Adapter Protocol from…",
+ date: "2020-01-02",
+ authors: "Wolf Vollprecht",
+ imageID: "blogpost-image-39"
+ },
+ {
+ url: "https://medium.com/@wolfv/robot-development-with-jupyter-ddae16d4e688",
+ title: "Robot Development with Jupyter",
+ image: "/img/blogposts/resized-images/Robot-Development-with-Jupyter.png",
+ summary: "Jupyter and Voilà are two popular packages in the data science ecosystem. But the Jupyter plugins jupyter-ros and jupyter-amphion make them more interesting than ever for robotics applications. This…",
+ date: "2019-12-31",
+ authors: "Wolf Vollprecht",
+ imageID: "blogpost-image-38"
+ },
+ {
+ url: "https://medium.com/@johan.mabille/how-we-wrote-xtensor-7-n-broadcasting-cf37a974d029",
+ title: "How we Wrote Xtensor (Episode 7) - Broadcasting",
+ image: "/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-7-Broadcasting.png",
+ summary: "In the previous article, we implemented operator and mathematical function overloads so that we can build arbitrary complex expression trees and access their elements. Before we can assign an…",
+ date: "2019-11-24",
+ authors: "Johan Mabille",
+ imageID: "blogpost-image-37"
+ },
+ {
+ url: "https://blog.jupyter.org/voila-gridstack-template-8a431c2b353e",
+ title: "Configure your Dashboards with the Voilà Gridstack Template",
+ image: "/img/blogposts/resized-images/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.png",
+ summary: "Voilà is a new dashboarding solution from Jupyter ecosystem. It provides an easy-to-use tool to convert your Jupyter notebooks into standalone web applications. If you have not used it before, you…",
+ date: "2019-11-11",
+ authors: "Bartosz Telenczuk",
+ imageID: "blogpost-image-36"
+ },
+ {
+ url: "https://blog.jupyter.org/a-slideshow-template-for-voil%C3%A0-apps-435f67d10b4f",
+ title: "A Slideshow template for Voilà",
+ image: "/img/blogposts/resized-images/A-Slideshow-template-for-Voila.png",
+ summary: "Last June, QuantStack announced the first release of Voilà, a solution to turn Jupyter notebooks into standalone web applications. Voilà enforces security (preventing arbitrary code execution) while…",
+ date: "2019-10-29",
+ authors: "Marianne Corvellec",
+ imageID: "blogpost-image-35"
+ },
+ {
+ url: "https://medium.com/@wolfv/ros-on-conda-forge-dca6827ac4b6",
+ title: "ROS on Conda-forge",
+ image: "/img/blogposts/resized-images/ROS-on-Conda-forge.png",
+ summary: "ROS is a fantastic and very large suite of software tools for Robotics. It’s used in many applications and with great success, ranging from the hobbyist market to industrial use cases. Most people…",
+ date: "2019-10-28",
+ authors: "Wolf Vollprecht",
+ imageID: "blogpost-image-34"
+ },
+ {
+ url: "https://blog.jupyter.org/ipycanvas-a-python-canvas-for-jupyter-bbb51e4777f7",
+ title: "IPycanvas, a Python Canvas for Jupyter",
+ image: "/img/blogposts/resized-images/IPycanvas-a-Python-Canvas-for-Jupyter.png",
+ summary: "As you may already know, the Jupyter Notebook and JupyterLab are Browser-based applications. Browsers are incredibly powerful, they allow you to swap rich and interactive graphical interfaces…",
+ date: "2019-10-25",
+ authors: "Martin Renou",
+ imageID: "blogpost-image-33"
+ },
+ {
+ url: "https://blog.jupyter.org/field-report-on-the-kernel-community-workshop-a4ad73a1a718",
+ title: "Field Report on the Kernel Community Workshop",
+ image: "/img/blogposts/resized-images/Field-Report-on-the-Kernel-Community-Workshop.png",
+ summary: "From May 27th to May 29, thirty developers from the Jupyter community met in Paris for a three-days workshop on the Jupyter kernel…",
+ date: "2019-10-07",
+ authors: "Sylvain Corlay",
+ imageID: "blogpost-image-32"
+ },
+ {
+ url: "https://medium.com/@johan.mabille/how-we-wrote-xtensor-6-n-operator-overloading-984c2e5b4171",
+ title: "How we Wrote Xtensor (Episode 6) - Operator Overloading",
+ image: "/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-6-Operator-Overloading.png",
+ summary: "In the previous article, we introduced expression templates and developed the skeleton of the xfunction class, meant to represent a node of the abstract syntax tree of a tensor expression. We left…",
+ date: "2019-09-25",
+ authors: "Johan Mabille",
+ imageID: "blogpost-image-31"
+ },
+ {
+ url: "https://blog.jupyter.org/interactive-gis-in-jupyter-with-ipyleaflet-52f9657fa7a",
+ title: "Interactive GIS in Jupyter with IPyleaflet",
+ image: "/img/blogposts/resized-images/Interactive-GIS-in-Jupyter-with-IPyleaflet.png",
+ summary: "As Jupyter grew in popularity, a broad ecosystem of visualization packages based on Jupyter widgets has been developed, bringing even more interactivity to the Jupyter world. In this article, we dive…",
+ date: "2019-09-25",
+ authors: "Sylvain Corlay, Martin Renou",
+ imageID: "blogpost-image-30"
+ },
+ {
+ url: "https://medium.com/@johan.mabille/how-we-wrote-xtensor-5-n-expression-templates-d07332e73d1d",
+ title: "How we Wrote Xtensor (Episode 5) - Expression Templates",
+ image: "/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-5-Expression-Templates.png",
+ summary: "In the previous articles, we started to implement an N-D container, xarray, which has value semantics and provides all the methods required to access its data. The next step is to give it computation…",
+ date: "2019-09-05",
+ authors: "Johan Mabille",
+ imageID: "blogpost-image-29"
+ },
+ {
+ url: "https://blog.jupyter.org/building-a-calculator-jupyter-kernel-4aed5764a295",
+ title: "Building a Calculator Jupyter Kernel",
+ image: "/img/blogposts/resized-images/Building-a-Calculator-Jupyter-Kernel.png",
+ summary: "In order to provide a language-agnostic scientific development environment, the Jupyter project is built upon a well-specified protocol to communicate with the Kernel, the part of the infrastructure…",
+ date: "2019-07-16",
+ authors: "Vasavan Thiru, Thibault Lacharme",
+ imageID: "blogpost-image-28"
+ },
+ {
+ url: "https://medium.com/@johan.mabille/how-we-wrote-xtensor-4-n-value-semantics-6baa6856d313",
+ title: "How we Wrote Xtensor (Episode 4) - Value Semantics",
+ image: "/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-4-Value-Semantics.png",
+ summary: "xtensor is a comprehensive framework for N-D arrays processing, including an extensible expression system, lazy evaluation, and many other…",
+ date: "2019-07-16",
+ authors: "Johan Mabille",
+ imageID: "blogpost-image-27"
+ },
+ {
+ url: "https://blog.jupyter.org/introducing-templates-for-jupyter-widget-layouts-f72bcb35a662",
+ title: "Introducing Templates for Jupyter Widget Layouts",
+ image: "/img/blogposts/resized-images/Introducing-Templates-for-Jupyter-Widget-Layouts.png",
+ summary: "Notebooks come alive with Jupyter widgets, which allow users to produce interactive GUIs inline in the Jupyter notebook or JupyterLab. You can either use them to add a few interactive controls and…",
+ date: "2019-07-04",
+ authors: "Bartosz Telenczuk",
+ imageID: "blogpost-image-26"
+ },
+ {
+ url: "https://medium.com/@johan.mabille/how-we-wrote-xtensor-3-n-the-constructors-65a177260638",
+ title: "How we Wrote Xtensor (Episode 3) - The Constructors",
+ image: "/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-3-The-Constructors.png",
+ summary: "In the previous article, we detailed the implementation of a generic access operator for our N-D container. Two more things to implement before the xarray class can be used in practice are…",
+ date: "2019-06-24",
+ authors: "Johan Mabille",
+ imageID: "blogpost-image-25"
+ },
+ {
+ url: "https://medium.com/@johan.mabille/how-we-wrote-xtensor-2-n-access-operators-57e8e3852263",
+ title: "How we Wrote Xtensor (Episode 2) - Access Operators",
+ image: "/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-2-Access-Operators.png",
+ summary: "In the previous article, we started to design an N-dimensional container. We detailed the implementation of methods related to shape, strides, and memory layout. Let us now get to the access…",
+ date: "2019-06-20",
+ authors: "Johan Mabille",
+ imageID: "blogpost-image-24"
+ },
+ {
+ url: "https://medium.com/@johan.mabille/how-we-wrote-xtensor-1-n-n-dimensional-containers-f79f9f4966a7",
+ title: "How we Wrote Xtensor (Episode 1) - N-Dimensional Containers",
+ image: "/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-1-N-Dimensional-Containers.png",
+ summary: "xtensor is a C++ library meant for numerical analysis with multi-dimensional array expressions. It exposes an API similar to that of NumPy…",
+ date: "2019-06-17",
+ authors: "Johan Mabille",
+ imageID: "blogpost-image-23"
+ },
+ {
+ url: "https://blog.jupyter.org/and-voil%C3%A0-f6a2c08a4a93",
+ title: "And Voilà!",
+ image: "/img/blogposts/resized-images/And-Voila.png",
+ summary: "The goal of Project Jupyter is to improve the workflows of researchers, educators, scientists, and other practitioners of scientific computing, from the exploratory phase of their work to the…",
+ date: "2019-06-11",
+ authors: "Sylvain Corlay, Maarten Breddels",
+ imageID: "blogpost-image-22"
+ },
+ {
+ url: "https://medium.com/@wolfv/mamba-development-news-29e32aaa8d6c",
+ title: "Mamba Development News",
+ image: "/img/blogposts/resized-images/Mamba-Development-News.png",
+ summary: "Mamba is a drop-in replacement for conda, the awesome cross-platform package manager. In our opinion, conda has one tiny problem: it’s too slow when many packages are installed, or when installing…",
+ date: "2019-06-10",
+ authors: "Wolf Vollprecht",
+ imageID: "blogpost-image-21"
+ },
+ {
+ url: "https://medium.com/@wolfv/building-an-open-source-continuous-benchmark-system-717839093962",
+ title: "Building an Open-Source Continuous Benchmark System",
+ image: "/img/blogposts/resized-images/Building-an-Open-Source-Continuous-Benchmark-System.png",
+ summary: "Concourse is a continuous integration software, and we use it for two purposes: multi-project continuous integration, and continuous benchmarking. It’s easy to setup on a low cost server, using…",
+ date: "2019-05-29",
+ authors: "Wolf Vollprecht",
+ imageID: "blogpost-image-20"
+ },
+ {
+ url: "https://blog.jupyter.org/ros-jupyter-b7e82b5e1202",
+ title: "ROS @ Jupyter",
+ image: "/img/blogposts/resized-images/ROS-@-Jupyter.png",
+ summary: "Historically, the ROS (Robot Operating System) community has relied on Qt for building complex user interfaces. Nowadays, the Jupyter notebook and the ipywidgets framework offer a compelling…",
+ date: "2019-04-07",
+ authors: "Wolf Vollprecht",
+ imageID: "blogpost-image-19"
+ },
+ {
+ url: "https://medium.com/@wolfv/making-conda-fast-again-4da4debfb3b7",
+ title: "Making Conda Fast Again",
+ image: "/img/blogposts/resized-images/Making-Conda-Fast-Again.png",
+ summary: "You might have seen the announcement on Twitter: at QuantStack we’ve been working on making a prototype of a conda-compatible package manager called mamba. Conda is a great tool to distribute data…",
+ date: "2019-03-28",
+ authors: "Wolf Vollprecht",
+ imageID: "blogpost-image-18"
+ },
+ {
+ url: "https://medium.com/data-science/interactive-spreadsheets-in-jupyter-32ab6ec0f4ff",
+ title: "Interactive spreadsheets in Jupyter",
+ image: "/img/blogposts/resized-images/Interactive-spreadsheets-in-Jupyter.png",
+ summary: "ipysheet is a new interactive widgets library that aims at implementing the core features of a good spreadsheet application and more…",
+ date: "2019-03-08",
+ authors: "Martin Renou",
+ imageID: "blogpost-image-17"
+ },
+ {
+ url: "https://blog.jupyter.org/a-new-python-kernel-for-jupyter-fcdf211e30a8",
+ title: "A New Python Kernel for Jupyter",
+ image: "/img/blogposts/resized-images/A-New-Python-Kernel-for-Jupyter.png",
+ summary: "Project Jupyter aims at providing a consistent set of tools for interactive computing workflows across multiple programming languages. Jupyter projects are popular at all stages of a research project…",
+ date: "2019-01-09",
+ authors: "Martin Renou",
+ imageID: "blogpost-image-16"
+ },
+ {
+ url: "https://medium.com/@johan.mabille/xframe-towards-a-c-dataframe-26e1ccde211b",
+ title: "Xframe: Towards a C++ Dataframe",
+ image: "/img/blogposts/resized-images/Xframe-Towards-a-C++-Dataframe.png",
+ summary: "For a very long time, the C++ programming language lacked a high-level toolset for scientific computing. Data structures such as N-dimensional arrays, data frames, are the bread and butter of the R…",
+ date: "2019-01-04",
+ authors: "Johan Mabille",
+ imageID: "blogpost-image-15"
+ },
+ {
+ url: "https://medium.com/@johan.mabille/designing-language-bindings-with-xtensor-f32aa0f20db",
+ title: "Designing Language Bindings with Xtensor",
+ image: "/img/blogposts/resized-images/Designing-Language-Bindings-with-Xtensor.png",
+ summary: "xtensor and its satellite projects make it easy to implement a feature once in C++ and expose it to the main languages of data science, such as Python, Julia and R with little extra work. Although…",
+ date: "2018-11-30",
+ authors: "Johan Mabille",
+ imageID: "blogpost-image-14"
+ },
+ {
+ url: "https://medium.com/data-science/video-streaming-in-the-jupyter-notebook-635bc5809e85",
+ title: "Video Streaming in the Jupyter Notebook",
+ image: "/img/blogposts/resized-images/Video-Streaming-in-the-Jupyter-Notebook.png",
+ summary: "ipywidgets plays an essential part in the Jupyter ecosystem; it brings interactivity between user and data. Widgets are eventful Python objects that often have a visual representation in the Jupyter…",
+ date: "2018-11-19",
+ authors: "Martin Renou",
+ imageID: "blogpost-image-13"
+ },
+ {
+ url: "https://towardsdatascience.com/the-xtensor-vision-552dd978e9ad",
+ title: "The Xtensor Vision",
+ image: "/img/blogposts/resized-images/The-Xtensor-Vision.png",
+ summary: "Here we’re laying out a vision for the xtensor project, the n-dimensional array in the C++ language — that makes it easy to write high-performance code and bind it to the languages of data science…",
+ date: "2018-11-10",
+ authors: "Wolf Vollprecht",
+ imageID: "blogpost-image-12"
+ },
+ {
+ url: "https://serge-sans-paille.github.io/pythran-stories/bye-bye-boostsimd-welcome-xsimd.html",
+ title: "Bye bye Boost.SIMD, Welcome XSimd",
+ image: "/img/blogposts/resized-images/Bye-bye-Boost-SIMD-Welcome-XSimd.png",
+ summary: "Boost.simd provides a C++ abstraction of vector type, allowing for efficient vectorization of array computations. It has been (optionally) used as part of the expression template engine of Pythran for a long time, a great collaboration that led to several patches in boost.simd, and great performance for Pythran.",
+ date: "2019-10-31",
+ authors: "Serge Guelton",
+ imageID: "blogpost-image-11"
+ },
+ {
+ url: "https://medium.com/@QuantStack/xtensor-c-and-the-julia-challenge-643d4b119761",
+ title: "Xtensor, C++, and the Julia Challenge",
+ image: "/img/blogposts/resized-images/Xtensor-C++-and-the-Julia-Challenge.png",
+ summary: "Last mon, Simon Danisch launched the Julia Language Challenge, a programming challenge from a member of the Julia community to other programming languages. with high performances. This can be…",
+ date: "2018-10-24",
+ authors: "Sylvain Corlay, Johan Mabille, Wolf Vollprecht",
+ imageID: "blogpost-image-10"
+ },
+ {
+ url: "https://medium.com/@wolfv/the-julia-challenge-in-c-21272d36c002",
+ title: "The Julia Challenge in C++",
+ image: "/img/blogposts/resized-images/The-Julia-Challenge-in-C++.png",
+ summary: "Recently, some folks of the Julia community were boasting about the expressiveness of the Julia programming language, compared to older languages. That’s how they started the Julia Challenge. The…",
+ date: "2018-10-12",
+ authors: "Wolf Vollprecht",
+ imageID: "blogpost-image-9"
+ },
+ {
+ url: "https://blog.jupyter.org/interpreted-c-for-gis-with-jupyter-ae191bc6fb8e",
+ title: "Interpreter C++ for GIS with Jupyter",
+ image: "/img/blogposts/resized-images/Interpreter-C++-for-GIS-with-Jupyter.png",
+ summary: "The recent release of the Jupyter kernel for C++, based on the Cling interpreter enabled a number of new workflows for the users of the C++ programming language. More than a limited set of base…",
+ date: "2018-04-24",
+ authors: "Martin Renou",
+ imageID: "blogpost-image-8"
+ },
+ {
+ url: "https://blog.jupyter.org/authoring-custom-jupyter-widgets-2884a462e724",
+ title: "Authoring Custom Jupyter Widgets",
+ image: "/img/blogposts/resized-images/Authoring-Custom-Jupyter-Widgets.png",
+ summary: "Jupyter interactive widgets enhance the notebook experience by allowing users to create graphical user interfaces. They enable richer interaction with the data and computing resources. While the base…",
+ date: "2018-03-05",
+ authors: "Olivier Borderies, Olivier Coudray, Pierre Marion",
+ imageID: "blogpost-image-7"
+ },
+ {
+ url: "https://blog.jupyter.org/jupyter-receives-the-acm-software-system-award-d433b0dfe3a2",
+ title: "Jupyter Receives the ACM Software System Award",
+ image: "/img/blogposts/resized-images/Jupyter-Receives-the-ACM-Software-System-Award.png",
+ summary: "It is our pleasure to announce that Project Jupyter has been awarded the 2017 ACM Software System Awa, a significant honor for the project. We are humbled to join an illustrious list of projects…",
+ date: "2018-03-02",
+ authors: "Project Jupyter",
+ imageID: "blogpost-image-6"
+ },
+ {
+ url: "https://blog.jupyter.org/a-diagram-editor-for-jupyterlab-a254121ff919",
+ title: "A Diagram Editor for JupyterLab",
+ image: "/img/blogposts/resized-images/A-Diagram-Editor-for-JupyterLab.png",
+ summary: "The new JupyterLab interface is much more than a replacement for the classic notebook. It aims to bring together all the pieces required for a complete scientific workflow. The extension-based…",
+ date: "2018-02-26",
+ authors: "Wolf Vollprecht",
+ imageID: "blogpost-image-5"
+ },
+ {
+ url: "https://medium.com/@wolfv/fast-reductions-in-xtensor-with-simd-212a8543960a",
+ title: "Fast Reductions in Xtensor with Xsimd",
+ image: "/img/blogposts/resized-images/Fast-Reductions-in-Xtensor-with-Xsimd.png",
+ summary: "xtensor has a wealth of mathematical functions available already: we support a lot of the NumPy API right there in C++. One of the areas where we were a bit slower than NumPy in the past were…",
+ date: "2018-02-20",
+ authors: "Wolf Vollprecht",
+ imageID: "blogpost-image-4"
+ },
+ {
+ url: "https://medium.com/@wolfv/faster-xtensor-87fcbe7f5293",
+ title: "Faster Xtensor",
+ image: "/img/blogposts/resized-images/Faster-Xtensor.png",
+ summary: "Knowing the size of the memory that is to be allocated at compile time can improve the runtime performance a lot — the compiler can already reserve the required space on the stack (instead of having…",
+ date: "2018-02-18",
+ authors: "Wolf Vollprecht",
+ imageID: "blogpost-image-3"
+ },
+ {
+ url: "https://blog.jupyter.org/interactive-workflows-for-c-with-jupyter-fe9b54227d92",
+ title: "Interactive Workflows for C++ with Jupyter",
+ image: "/img/blogposts/resized-images/Interactive-Workflows-for-C++-with-Jupyter.png",
+ summary: "Scientists, educators and engineers not only use programming languages to build software systems, but also in interactive workflows, using the tools available to explore a problem and reason about…",
+ date: "2017-11-29",
+ authors: "Sylvain Corlay, Loic Gouarin, Johan Mabille, Wolf Vollprecht",
+ imageID: "blogpost-image-2"
+ },
+ {
+ url: "https://medium.com/@SylvainCorlay/scientific-computing-in-a-polyglot-world-with-xtensor-d81ff3865d6",
+ title: "Scientific Computing in a Polyglot World with Xtensor",
+ image: "/img/blogposts/resized-images/Scientific-Computing-in-a-Polyglot-World-with-Xtensor.png",
+ summary: "The One Language to Rule Them All probably does not exist yet. In the world of interactive scientific computing, countless articles and blog posts argue on the merits of R, Python, Julia and other…",
+ date: "2017-05-05",
+ authors: "Sylvain Corlay",
+ imageID: "blogpost-image-1"
+ }
+];
diff --git a/src/components/careers/styles.module.css b/src/pages/careers.module.css
similarity index 88%
rename from src/components/careers/styles.module.css
rename to src/pages/careers.module.css
index 70b0576ef..c6de3ca02 100644
--- a/src/components/careers/styles.module.css
+++ b/src/pages/careers.module.css
@@ -3,11 +3,6 @@
padding: 0;
}
-.interview_picture {
- width: 100%;
- height: auto;
-}
-
.picture_container {
position: relative;
width: 100%;
@@ -16,6 +11,11 @@
justify-content: center;
}
+.interview_picture {
+ width: 100%;
+ height: auto;
+}
+
.play_interview {
height: 60px;
width: 60px;
@@ -26,19 +26,12 @@
-ms-transform: translate(-50%, -50%);
}
-.link_to_WTJ {
- background-color: var(--ifm-color-secondary-s2);
- color: white;
- width: 358px;
- font-weight: 700;
-}
-
.interview_card {
width: 280px;
height: 300px;
- background-color: var(--ifm-background-color);
+ background-color: var(--ifm-bg-neutral);
border-radius: 10px;
- box-shadow: 0px 0px 8px 1px #c8c8c7;
+ box-shadow: var(--ifm-shadow-card);
padding: var(--ifm-spacing-sm);
text-align: center;
margin-bottom: var(--ifm-spacing-xl);
@@ -59,7 +52,7 @@
font-size: 22px;
font-style: normal;
font-weight: 400;
- line-height: 128.571%;
+ line-height: 128.571%;
margin-top: var(--ifm-spacing-lg);
}
@@ -74,14 +67,18 @@
letter-spacing: 0.5px;
}
+.link_to_WTJ {
+ background-color: var(--ifm-bg-emphasis);
+ color: white;
+ font-weight: 700;
+}
+
@media only screen and (max-width: 996px) {
- /*Mobile*/
.join_the_team_text {
text-align: center;
font-size: 18px;
font-family: var(--ifm-font-family-roboto);
color: var(--ifm-color-primary-p2);
- text-align: center;
font-style: normal;
font-weight: 400;
line-height: 36px;
@@ -93,13 +90,11 @@
}
@media only screen and (min-width: 996px) {
- /*Desktop*/
.join_the_team_text {
text-align: center;
font-size: 28px;
font-family: var(--ifm-font-family-roboto);
color: var(--ifm-color-primary-p2);
- text-align: center;
font-style: normal;
font-weight: 400;
line-height: 36px;
diff --git a/src/pages/careers.tsx b/src/pages/careers.tsx
index 2075918ae..5c53b54b8 100644
--- a/src/pages/careers.tsx
+++ b/src/pages/careers.tsx
@@ -1,16 +1,114 @@
-import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
-import Layout from '@theme/Layout';
-import Careers from '../components/careers';
+import Layout from "@theme/Layout";
+import BrowserOnly from "@docusaurus/BrowserOnly";
import Footer from "../components/footer/Footer";
+import Section from "../components/layout/Section";
+import SectionSeparator from "../components/layout/SectionSeparator";
+import Banner from "../components/layout/Banner";
+import Link from "@docusaurus/Link";
+import styles from "./careers.module.css";
+import PlayCircle from "@site/static/img/icons/PlayCircle.svg";
+import ScrollDownCTA from "../components/layout/ScrollDownCTA";
+import LinkToContact from "../components/LinkToContact";
+import GroupPhotoUrl from "@site/static/img/group/group-photo.png";
+import SylvainPictureUrl from "@site/static/img/interviews/Sylvain_WTJ.png";
+import JohanPictureUrl from "@site/static/img/interviews/Johan_WTJ.png";
+import MartinPictureUrl from "@site/static/img/interviews/Martin_WTJ.png";
+import JeremyPictureUrl from "@site/static/img/interviews/Jeremy_WTJ.png";
+import DarianPictureUrl from "@site/static/img/interviews/Darian_WTJ.png";
+import DavidPictureUrl from "@site/static/img/interviews/David_WTJ.png";
+import GabrielaPictureUrl from "@site/static/img/interviews/Gabriela_WTJ.png";
+import TrungPictureUrl from "@site/static/img/interviews/Trung_WTJ.png";
+import MeriemPictureUrl from "@site/static/img/interviews/Meriem_WTJ.png";
+import MatthiasPictureUrl from "@site/static/img/interviews/Matthias_WTJ.png";
+import SandrinePictureUrl from "@site/static/img/interviews/Sandrine_WTJ.png";
+
+const interviews = [
+ { completeName: "Sylvain Corlay", firstName: "Sylvain", position: "CEO", pictureUrl: SylvainPictureUrl, url: "https://www.dailymotion.com/video/xa0qmac" },
+ { completeName: "Johan Mabille", firstName: "Johan", position: "Technical Director", pictureUrl: JohanPictureUrl, url: "https://www.dailymotion.com/video/x9zl9ta" },
+ { completeName: "Martin Renou", firstName: "Martin", position: "Technical Director", pictureUrl: MartinPictureUrl, url: "https://www.dailymotion.com/video/x9zl9t6" },
+ { completeName: "Jeremy Tuloup", firstName: "Jeremy", position: "Technical Director", pictureUrl: JeremyPictureUrl, url: "https://www.dailymotion.com/video/x9zl9t8" },
+ { completeName: "Afshin Darian", firstName: "Darian", position: "Technical Director", pictureUrl: DarianPictureUrl, url: "https://www.dailymotion.com/video/x9zl9t2" },
+ { completeName: "David Brochart", firstName: "David", position: "Technical Director", pictureUrl: DavidPictureUrl, url: "https://www.dailymotion.com/video/x9zl9t4" },
+ { completeName: "Gabriela Vives", firstName: "Gabriela", position: "UX Designer and Researcher", pictureUrl: GabrielaPictureUrl, url: "https://www.dailymotion.com/video/x9zl9sw" },
+ { completeName: "Trung Le Duc", firstName: "Trung", position: "Scientific Software Developer", pictureUrl: TrungPictureUrl, url: "https://www.dailymotion.com/video/x9zl9t0" },
+ { completeName: "Sandrine Pataut", firstName: "Sandrine", position: "Scientific Software Developer", pictureUrl: SandrinePictureUrl, url: "https://www.dailymotion.com/video/xa0qmai" },
+ { completeName: "Matthias Meschede", firstName: "Matthias", position: "Chief Operating Officer", pictureUrl: MatthiasPictureUrl, url: "https://www.dailymotion.com/video/xa0qmae" },
+ { completeName: "Meriem Ben Ismail", firstName: "Meriem", position: "Scientific Software Developer", pictureUrl: MeriemPictureUrl, url: "https://www.dailymotion.com/video/xa0qmag" },
+];
+
+function InterviewCard({ person }) {
+ return (
+
+
+
+
+
+
+
+
+
{person.firstName}
+
{person.position}
+
+
+ );
+}
+
+function CareersContent() {
+ return (
+ <>
+
+ Join the QuantStack team.
+ Your code will reach millions. Your contributions go upstream.
+ We are ~30 researchers and engineers building the infrastructure of scientific computing. This is not a support role — it's a principal contributor role from day one. Most of us have PhDs or deep research backgrounds, and every one of us ships code upstream.
+
+ Get in touch
+
+
+
+
+
+
+
+
+
+
+
+
+ We're looking for researchers and engineers who want to work at the frontier of open-source scientific computing. If you have strong fundamentals, a taste for hard problems, and care deeply about the impact of your work — we'd like to meet you.
+
+
+
Working at QuantStack
+
+
+ {interviews.map((person) => (
+
+
+
+
+
+ ))}
+
+
+
+
+
+
+ }
+ >
+ Ready to work on tools that millions of people depend on? We'd like to meet you.
+
+ >
+ );
+}
export default function CareersPage(): JSX.Element {
- const { siteConfig } = useDocusaurusContext();
return (
-
-
+ {() => }
+
);
}
-
diff --git a/src/components/contact/styles.module.css b/src/pages/contact.module.css
similarity index 55%
rename from src/components/contact/styles.module.css
rename to src/pages/contact.module.css
index ef330c1fb..e29c28515 100644
--- a/src/components/contact/styles.module.css
+++ b/src/pages/contact.module.css
@@ -4,8 +4,6 @@
background: var(--ifm-color-blue-jupyter);
}
-
-
.contact_form {
margin-top: var(--ifm-spacing-xl);
}
@@ -13,48 +11,45 @@
.form_label {
font-size: 12px;
color: var(--ifm-text-color);
- background-color: var(--ifm-background-color);
+ background-color: var(--ifm-bg-neutral);
}
-
-
@media only screen and (max-width: 996px) {
- /*Mobile*/
.small_input {
width: 300px;
height: 56px;
border-radius: 4px;
}
-
+
.large_input {
width: 300px;
height: 220px;
border-radius: 4px;
}
+
.send_button_container {
height: 59px;
width: 300px;
margin: var(--ifm-spacing-2xl) 0;
}
-
+}
+
+@media only screen and (min-width: 996px) {
+ .small_input {
+ width: 508px;
+ height: 56px;
+ border-radius: 4px;
}
- @media only screen and (min-width: 996px) {
- /*Desktop*/
- .small_input {
- width: 508px;
- height: 56px;
- border-radius: 4px;
- }
-
- .large_input {
- width: 508px;
- height: 220px;
- border-radius: 4px;
- }
- .send_button_container {
- height: 59px;
- width: 508px;
- margin: var(--ifm-spacing-2xl) 0;
- }
- }
\ No newline at end of file
+ .large_input {
+ width: 508px;
+ height: 220px;
+ border-radius: 4px;
+ }
+
+ .send_button_container {
+ height: 59px;
+ width: 508px;
+ margin: var(--ifm-spacing-2xl) 0;
+ }
+}
diff --git a/src/pages/contact.tsx b/src/pages/contact.tsx
index 1fd3daf8d..5069f6e7f 100644
--- a/src/pages/contact.tsx
+++ b/src/pages/contact.tsx
@@ -1,15 +1,33 @@
-import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
import Layout from "@theme/Layout";
-import Contact from "@site/src/components/contact";
import BrowserOnly from "@docusaurus/BrowserOnly";
import Footer from "../components/footer/Footer";
+import SplitSection from "../components/layout/SplitSection";
+import ContactForm from "../components/ContactForm";
+import ContactIllustration from "/img/illustrations/contact.svg";
export default function ContactPage(): JSX.Element {
- const { siteConfig } = useDocusaurusContext();
return (
- {() => }
-
+
+ {() => (
+
+ }
+ >
+ Contact us
+
+
+ )}
+
+
);
}
diff --git a/src/pages/home.tsx b/src/pages/home.tsx
deleted file mode 100644
index 11a7a04c0..000000000
--- a/src/pages/home.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
-import Layout from "@theme/Layout";
-import Home from "../components/home/Home";
-import BrowserOnly from "@docusaurus/BrowserOnly";
-import Footer from "../components/footer/Footer";
-
-export default function HomePage(): JSX.Element {
- const { siteConfig } = useDocusaurusContext();
- return (
-
-
- {() => }
-
-
-
- );
-}
diff --git a/src/pages/index.module.css b/src/pages/index.module.css
new file mode 100644
index 000000000..453850d0e
--- /dev/null
+++ b/src/pages/index.module.css
@@ -0,0 +1,204 @@
+/* ── Hero ─────────────────────────────────────────────────────────────────── */
+
+.hero_container {
+ background-color: var(--ifm-bg-brand);
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ padding-top: calc(var(--ifm-navbar-height) + var(--ifm-spacing-2xl));
+ padding-bottom: var(--ifm-spacing-2xl);
+ margin-top: calc(-1 * var(--ifm-navbar-height));
+ box-sizing: border-box;
+ position: relative;
+ overflow: hidden;
+}
+
+.hero_body {
+ position: relative;
+ display: flex;
+ align-items: center;
+ gap: var(--ifm-spacing-2xl);
+}
+
+.hero_text {
+ flex: 3;
+ min-width: 0;
+ position: relative;
+ z-index: 1;
+}
+
+.hero_image {
+ flex: 2;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+ z-index: 1;
+}
+
+.hero_title {
+ font-size: 8rem;
+ line-height: 1;
+ white-space: nowrap;
+}
+
+.sub_header {
+ text-align: left;
+}
+
+.tech_tagline {
+ color: var(--ifm-color-blue-jupyter);
+ font-size: var(--ifm-font-size-secondary-title);
+ font-weight: 700;
+}
+
+.accent {
+ color: var(--ifm-color-accent-red);
+}
+
+@media (max-width: 996px) {
+ .hero_title {
+ font-size: 4rem;
+ }
+
+ .hero_body {
+ flex-direction: column;
+ padding: var(--ifm-spacing-xl) 0;
+ }
+
+ .hero_image {
+ display: none;
+ }
+
+ .tech_tagline {
+ font-size: 20px;
+ line-height: 150%;
+ text-align: center;
+ }
+}
+
+@media (max-width: 996px) and (min-width: 600px) {
+ .hero_title {
+ font-size: 6rem;
+ }
+
+ .tech_tagline {
+ font-size: 26px;
+ }
+}
+
+/* ── Services (How we work with you) ─────────────────────────────────────── */
+
+.topics_header {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: var(--ifm-font-size-secondary-title);
+ font-weight: 700;
+ line-height: 28px;
+ min-height: 56px;
+ display: flex;
+ align-items: flex-start;
+ justify-content: flex-start;
+ text-align: left;
+ margin-bottom: var(--ifm-spacing-xl);
+ color: var(--ifm-color-neutral-n2);
+}
+
+.topics_card {
+ padding: var(--ifm-spacing-2xl) var(--ifm-spacing-lg);
+}
+
+.projects_link {
+ display: none;
+}
+
+@media (max-width: 996px) {
+ .projects_link {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: var(--ifm-spacing-sm);
+ }
+}
+
+/* ── Projects Overview ────────────────────────────────────────────────────── */
+
+.projects_overview_container {
+ display: block;
+}
+
+.tagline {
+ color: var(--ifm-color-blue-jupyter);
+}
+
+@media (max-width: 996px) {
+ .projects_overview_container {
+ display: none;
+ }
+}
+
+/* ── About Us ─────────────────────────────────────────────────────────────── */
+
+.aboutQS_text {
+ font-size: 14px;
+ text-align: center;
+ margin-bottom: var(--ifm-spacing-xl);
+ max-width: 800px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.learn_more_button_container {
+ display: flex;
+ justify-content: center;
+ margin-top: var(--ifm-spacing-xl);
+}
+
+.learn_more_button_container :global(.link-to-button) {
+ background: var(--ifm-color-accent-yellow);
+ color: var(--ifm-color-primary-p2);
+}
+
+.learn_more_button_container :global(.link-to-button):hover {
+ color: var(--ifm-color-primary-p2);
+ box-shadow: 0 8px 28px rgba(245, 229, 59, 0.5);
+}
+
+@media (min-width: 996px) {
+ .aboutQS_text {
+ font-size: 24px;
+ margin-bottom: var(--ifm-spacing-lg);
+ }
+}
+
+/* ── News ─────────────────────────────────────────────────────────────────── */
+
+@media (max-width: 996px) {
+ .news_wrapper {
+ display: none;
+ }
+}
+
+/* ── Link buttons ─────────────────────────────────────────────────────────── */
+
+@media only screen and (max-width: 996px) {
+ .link_to,
+ .link_to_services,
+ .link_to_about_us {
+ background-color: var(--ifm-color-primary-p1);
+ color: var(--ifm-text-color-on-primary-p1);
+ }
+
+ .link_to:hover,
+ .link_to_services:hover,
+ .link_to_about_us:hover {
+ color: var(--ifm-text-color-on-primary-p1);
+ box-shadow: 0 8px 24px rgba(246, 241, 149, 0.5);
+ }
+}
+
+@media only screen and (min-width: 996px) {
+ .link_to { background-color: var(--ifm-bg-emphasis); color: white; }
+ .link_to_services { background-color: var(--ifm-color-blue-jupyter); color: white; }
+ .link_to_about_us { background-color: var(--ifm-bg-emphasis); color: white; }
+}
diff --git a/src/pages/index.tsx b/src/pages/index.tsx
index 338a6dde5..6881672e3 100644
--- a/src/pages/index.tsx
+++ b/src/pages/index.tsx
@@ -1,16 +1,225 @@
-import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
-import Layout from "@theme/Layout";
-import Home from "../components/home/Home";
import BrowserOnly from "@docusaurus/BrowserOnly";
+import Link from "@docusaurus/Link";
+import Layout from "@theme/Layout";
import Footer from "../components/footer/Footer";
+import Section from "../components/layout/Section";
+import SectionSeparator from "../components/layout/SectionSeparator";
+import SplitSection from "../components/layout/SplitSection";
+import Banner from "../components/layout/Banner";
+import Card from "../components/layout/Card";
+import CardGrid from "../components/layout/CardGrid";
+import LogoGrid from "../components/LogoGrid";
+import LinkToNotebookLink from "../components/LinkToNotebookLink";
+import BlogpostCard from "../components/BlogpostCard";
+import { blogpostsDetails } from "./blogs/_blogpostsDetails";
+import styles from "./index.module.css";
+
+import Astronaut from "/img/quantstack/astronaut.svg";
+import GroupPhotoUrl from "@site/static/img/group/QuantStack-2000-58.png";
+import JupyterPictureUrl from "@site/static/img/projects/jupyterlab_examples.png";
+import MambaPictureUrl from "@site/static/img/projects/mamba_console.png";
+import SpecialProjectsPictureUrl from "@site/static/img/projects/special_projects.png";
+import RoboticsPictureUrl from "@site/static/img/projects/robotics.png";
+import XTensorXSIMDPicture from "@site/static/img/projects/xtensor_xsimd.svg";
+import ApacheArrowPicture from "@site/static/img/projects/apache_arrow.svg";
+
+function HomeContent() {
+ const numberOfBlogs = blogpostsDetails.length;
+
+ return (
+ <>
+ {/* ── Hero ──────────────────────────────────────────────────────────── */}
+
+
+
+
+
QUANTSTACK
+
+ OPEN TOOLS FOR DATA SCIENCE AND SCIENTIFIC COMPUTE
+
+
+ From Jupyter to Mamba to Apache Arrow, we maintain the stack millions of
+ researchers, engineers, and students depend on. Today we're also building
+ notebook.link to ship compute environments right in your browser.
+
+
+
+
+
+
+
+
+
+ {/* ── Trusted By ────────────────────────────────────────────────────── */}
+
+
+
+
+ {/* ── How we work with you (services) ───────────────────────────────── */}
+
+ How we work with you
+
+
+
+ Support Retainer
+ Direct access to the upstream maintainers of the tools your team depends on — not a helpdesk.
+ We triage issues, review pull requests, advise on architecture, and take ownership of problems your team cannot solve alone.
+
+
+
+
+ Custom Engineering
+ We build tools and platforms at the frontier of open-source scientific computing.
+ Recent examples: JupyterGIS for a large public organisation, JupyterCAD for a big aerospace engineering firm, notebook.link. What we build goes back upstream wherever possible.
+
+
+
+
+ Funded Development
+ Need a specific fix or feature in Mamba, JupyterLab, Arrow, or one of the many projects we maintain? We implement it upstream.
+ You get the feature. The community evolves and maintains it. No fork, no long-term maintenance burden on your team.
+
+
+
+
+ DISCOVER ALL OF OUR PROJECTS
+ DISCOVER OUR SERVICES
+
+
+
+
+
+ {/* ── What we work on (projects) ────────────────────────────────────── */}
+
+
+
+
}>
+
Jupyter Ecosystem
+
Core contributors to JupyterLab, JupyterLite, Voilà, and the broader Jupyter ecosystem.
+
We co-founded JupyterLab and JupyterLite — the browser-native Jupyter that runs without a server. Our team drives real-time collaboration, AI integration, and the visual debugger across the Jupyter stack, and maintains Voilà, xeus, JupyterGIS, and JupyterCAD. JupyterLab reaches over 10 million users worldwide; JupyterLite serves hundreds of thousands of students on minimal infrastructure.
+
+
+
}>
+
Package Management
+
We created Mamba, the fast conda replacement serving 5 million downloads per month.
+
We created Mamba, the fast, reliable conda replacement now serving 5 million downloads per month. We co-maintain conda-forge, delivering over 1 billion package downloads per month, and built emscripten-forge — the package forge that brings the full multilingual scientific computing stack to WebAssembly.
+
+
+
}>
+
Bespoke Platforms
+
Platforms built on our open-source stack for clients and the community.
+
+ JupyterCAD — real-time collaborative 3D CAD editing, built for Safran Aircraft Engines.
+ JupyterGIS — collaborative geospatial platform for ESA and research institutions.
+
+
+
+
}>
+
Robotics
+
Creators of RoboStack, the first multi-platform ROS distribution, and maintainers of jupyter-ros.
+
We created RoboStack, the first multi-platform distribution of ROS as conda packages, enabling robotics development on Linux, macOS, and Windows without system dependencies. We maintain jupyter-ros, a JupyterLab-based development environment for the ROS ecosystem.
+
+
+
}>
+
Scientific Computing
+
Authors of xtensor and xsimd, adopted by Apache Arrow, Firefox, and Pythran.
+
We authored xtensor, a multi-dimensional array library for C++ with a NumPy-style API, and xsimd, a unified SIMD operations library adopted by Apache Arrow, Firefox, Krita, and Pythran.
+
+
+
}>
+
Data Infrastructure
+
Principal maintainers of Apache Arrow's C++ core.
+
We are principal maintainers of Apache Arrow's C++ core — the in-memory columnar format underpinning most of the modern data ecosystem. We also maintain Apache Parquet, the dominant columnar storage format for analytics workloads.
+
+
+
+ {/* ── notebook.link ─────────────────────────────────────────────────── */}
+ }
+ >
+ A full Jupyter environment as a link. Instant setup, no server, no hassle. Sandboxed
+ compute runs in the browser, powered by WebAssembly and emscripten-forge. For{" "}
+ universities replacing JupyterHub, for{" "}
+ researchers sharing reproducible work, for{" "}
+ enterprise data teams , and for{" "}
+ public data portals serving millions of visitors
+ at near-zero infrastructure cost.
+
+
+ {/* ── About us ──────────────────────────────────────────────────────── */}
+
+ About us
+
+
+
+
+ QuantStack was founded in 2016. Today we operate as a collective of about 30 engineers
+ contributing remotely or from our office in Paris to the global open-source stack and
+ to our clients' projects. Many of us have PhD-level research experience or deep
+ engineering backgrounds. Our team combines decades of senior experience with the fresh
+ creativity and energy from more recent contributors.
+
+
+ Learn more
+
+
+
+
+
+ {/* ── Recent blog posts ─────────────────────────────────────────────── */}
+
+
+ Recent blog contributions
+
+ {[0, 1, 2].map((i) => (
+
+
+
+ ))}
+
+
+ READ MORE POSTS
+
+
+
+
+ {/* ── End CTA ───────────────────────────────────────────────────────── */}
+
+ SCHEDULE A MEETING
+
+ }
+ >
+ Support retainer, custom feature, or a full engineering engagement —
+ you work directly with the upstream maintainers of the tools your team depends on.
+
+ >
+ );
+}
export default function QSWebsite(): JSX.Element {
- const { siteConfig } = useDocusaurusContext();
return (
- {() => }
-
+ {() => }
+
);
}
-
diff --git a/src/pages/legal.module.css b/src/pages/legal.module.css
new file mode 100644
index 000000000..a51bd9038
--- /dev/null
+++ b/src/pages/legal.module.css
@@ -0,0 +1,14 @@
+.legal_container {
+ margin: var(--ifm-spacing-3xl)
+}
+
+.legal_title {
+ margin-bottom: var(--ifm-spacing-sm);
+ margin-top: var(--ifm-spacing-md);
+ font-family: var(--ifm-font-family-roboto);
+ font-size: var(--ifm-font-size-secondary-title);
+ font-weight: bolder;
+ line-height: 150%;
+ text-align: start;
+ color: var(--ifm-color-primary-p2);
+}
\ No newline at end of file
diff --git a/src/pages/legal.tsx b/src/pages/legal.tsx
new file mode 100644
index 000000000..80f79d7c4
--- /dev/null
+++ b/src/pages/legal.tsx
@@ -0,0 +1,54 @@
+import Layout from "@theme/Layout";
+import BrowserOnly from "@docusaurus/BrowserOnly";
+import Footer from "../components/footer/Footer";
+import React from "react";
+import styles from "./legal.module.css";
+
+
+function LegalContent() {
+ return (
+
+
Legal Entity
+
+ This website is published by QuantStack, a Simplified Joint-Stock Company (SAS) with a share capital of €1,080.00.
+
+
+ Registered Information
+
+
+ Address : 16 Avenue Curti, 94100 Saint-Maur-des-Fossés, France
+
+
+ VAT Number : FR76 820 717 668
+
+
+ SIREN (Company ID) : 820 717 668
+
+
Hosting Provider
+
+ This website is hosted by GitHub, Inc.
+
+
+
Registered information
+
Address : 8 Colin P. Kelly Jr Street
+ San Francisco, CA 94107
+ United States
+
+ Email : https://enterprise.github.com/contact
+
+
+ )
+}
+
+
+
+export default function LegalPage(): JSX.Element {
+ return (
+
+ {() =>
+
+
}
+
+
+ );
+}
diff --git a/src/pages/notebooklink.module.css b/src/pages/notebooklink.module.css
new file mode 100644
index 000000000..5ea5f7994
--- /dev/null
+++ b/src/pages/notebooklink.module.css
@@ -0,0 +1,29 @@
+.product_label {
+ color: var(--ifm-color-accent-yellow);
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 13px;
+ font-weight: 700;
+ letter-spacing: 2.5px;
+ text-transform: uppercase;
+ margin-bottom: var(--ifm-spacing-xs);
+ padding: 0;
+}
+
+.subtitle {
+ color: rgba(255, 255, 255, 0.85);
+ font-size: var(--ifm-font-size-medium);
+ padding: 0;
+}
+
+.feature_icon {
+ font-size: 32px;
+ margin-bottom: var(--ifm-spacing-sm);
+ display: block;
+}
+
+.feature_title {
+ font-family: var(--ifm-font-family-display);
+ font-weight: 800;
+ font-size: 22px;
+ margin-bottom: var(--ifm-spacing-xs);
+}
diff --git a/src/pages/notebooklink.tsx b/src/pages/notebooklink.tsx
new file mode 100644
index 000000000..ae7182f7d
--- /dev/null
+++ b/src/pages/notebooklink.tsx
@@ -0,0 +1,132 @@
+import Layout from "@theme/Layout";
+import BrowserOnly from "@docusaurus/BrowserOnly";
+import Footer from "../components/footer/Footer";
+import SplitSection from "../components/layout/SplitSection";
+import Section from "../components/layout/Section";
+import SectionSeparator from "../components/layout/SectionSeparator";
+import CardGrid from "../components/layout/CardGrid";
+import Card from "../components/layout/Card";
+import Banner from "../components/layout/Banner";
+import Rocket from "/img/notebooklink/rocket.svg";
+import LinkToNotebookLink from "../components/LinkToNotebookLink";
+import styles from "./notebooklink.module.css";
+
+function NotebookLinkContent() {
+ return (
+ <>
+
+ }
+ >
+
Our product: Notebook.link
+
Browser-native scientific computing. Large-scale deployments, no server, no setup, no limits.
+
+
+
+
+ A complete compute environment in a link.
+
+ Notebook.link delivers a full Jupyter environment running entirely in the browser —
+ powered by WebAssembly. No installation, no server spin-up, no IT ticket.
+ Click the link, start computing.
+
+
+ Built on JupyterLite and emscripten-forge, our open-source stack that brings
+ the complete scientific ecosystem — NumPy, SciPy, Pandas, Matplotlib,
+ and hundreds more including in C, R, Fortran and other languages — to any modern browser. The compute runs on your users' devices,
+ not our servers. That means it scales to any number of users for the cost of file storage.
+
+
+
+
+ Proven at scale.
+
+ The technology has been tested to deploy notebooks to tens of thousands of concurrent users
+ — just from standard static web servers. Zero compute infrastructure cost per user.
+
+
+
+
+ hundreds of thousands of students
+ JupyterLite — the same engine powering notebook.link — has been tested with hundreds of thousands of users.
+
+
+
+
+ orders of magnitude cheaper
+ Compared to JupyterHub, or other commercial platforms. Because users bring their own compute, we only add the comfort layer, your cost remains low.
+
+
+
+
+ Order-0 scaling
+ More users don't mean more servers. Browser-based execution means your platform scales without your costs scaling with it.
+
+
+
+
+
+
+ Built for every use case.
+
+
+
+ Education
+ Replace JupyterHub for your institution. No containers per student, no DevOps burden, no IT tickets. LMS integration via LTI. Gradable notebooks with encrypted solutions.
+
+
+
+
+ Research
+ Share reproducible work as a link. Byte-identical WASM environments mean your results are reproducible — not just in theory, but in practice. Computational irreproducibility costs billions annually.
+
+
+
+
+ Enterprise data platforms
+ Give internal analysts a Jupyter environment without the security overhead of local installs or the cost of per-user cloud kernels. SSO, RBAC, and audit logging on the roadmap. Backend kernels still available on demand.
+
+
+
+
+ Public data portals
+ Let millions of visitors interact with your data — including geospatial datasets via JupyterGIS or other advanced IDEs — without provisioning a single compute server. Data stays in the browser, GDPR-compliant by architecture.
+
+
+
+
+ Agentic AI
+ Let AI agents access compute environments and run real calculations right in the browser, like Claude Code but sandboxed, safe and available on the fly.
+
+
+
+
+
+
}
+ >
+ Free tier includes unlimited WebAssembly compute, link sharing, and basic storage.
+ Enterprise plans for universities and organizations with advanced storage and user management, on-demand backend kernels, grading + Moodle integration available.
+
+ >
+ );
+}
+
+export default function NotebookLinkPage(): JSX.Element {
+ return (
+
+ {() => }
+
+
+ );
+}
diff --git a/src/pages/projects.module.css b/src/pages/projects.module.css
new file mode 100644
index 000000000..377dbc9db
--- /dev/null
+++ b/src/pages/projects.module.css
@@ -0,0 +1,69 @@
+.project_title {
+ margin-bottom: var(--ifm-spacing-sm);
+ margin-top: var(--ifm-spacing-md);
+ font-family: var(--ifm-font-family-roboto);
+ font-size: var(--ifm-font-size-secondary-title);
+ font-weight: bolder;
+ line-height: 150%;
+ text-align: start;
+ color: var(--ifm-color-primary-p2);
+}
+
+.project_description {
+ text-align: left;
+ color: var(--ifm-color-primary-p2);
+}
+
+.project_logo {
+ max-width: 160px;
+ max-height: 160px;
+ width: auto;
+ height: auto;
+ object-fit: contain;
+ display: block;
+}
+
+.project_picture {
+ border-radius: 10px;
+ padding: var(--ifm-spacing-lg);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.project_picture_jupyter { border: solid 1px var(--ifm-color-orange-jupyter); }
+.project_picture_mamba { border: solid 1px #4cae4c; }
+.project_picture_condaforge { border: solid 1px var(--ifm-color-grey-condaforge); }
+.project_picture_arrow { border: solid 1px black; }
+.project_picture_xtensor { border: solid 1px var(--ifm-color-green-xtensor); }
+.project_picture_robotics { border: solid 1px rgb(146, 95, 218); }
+
+@media only screen and (max-width: 996px) {
+ .project_picture_jupyter,
+ .project_picture_mamba,
+ .project_picture_condaforge,
+ .project_picture_arrow,
+ .project_picture_xtensor,
+ .project_picture_robotics {
+ border: none;
+ padding: var(--ifm-spacing-md);
+ }
+}
+
+@media only screen and (min-width: 996px) {
+ .header_text {
+ font-size: 22px;
+ font-weight: 400;
+ line-height: 28px;
+ margin-bottom: var(--ifm-spacing-xl);
+ }
+}
+
+@media only screen and (max-width: 996px) {
+ .header_text {
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 20px;
+ margin-bottom: var(--ifm-spacing-lg);
+ }
+}
diff --git a/src/pages/projects.tsx b/src/pages/projects.tsx
index b2e625c9d..ababc7571 100644
--- a/src/pages/projects.tsx
+++ b/src/pages/projects.tsx
@@ -1,14 +1,168 @@
-import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
import Layout from "@theme/Layout";
-import Projects from "@site/src/components/projects";
import BrowserOnly from "@docusaurus/BrowserOnly";
import Footer from "../components/footer/Footer";
+import Section from "../components/layout/Section";
+import SectionSeparator from "../components/layout/SectionSeparator";
+import SplitSection from "../components/layout/SplitSection";
+import Banner from "../components/layout/Banner";
+import LinkToContact from "../components/LinkToContact";
+import ScrollDownCTA from "../components/layout/ScrollDownCTA";
+import styles from "./projects.module.css";
+
+import JupyterLogoUrl from "@site/static/img/projects/Jupyter.png";
+import MambaLogoUrl from "@site/static/img/projects/Mamba.png";
+import CondaForgeLogoUrl from "@site/static/img/projects/conda_forge.png";
+import ApacheArrowLogoUrl from "@site/static/img/projects/apache_arrow.png";
+import XtensorLogoUrl from "@site/static/img/projects/xtensor.png";
+import RobostackLogoUrl from "@site/static/img/projects/robostack.png";
+
+function ProjectsContent() {
+ return (
+ <>
+ {/* ── Header ────────────────────────────────────────────────────────── */}
+
+ Working in the open
+ Tools reaching millions of researchers, engineers, and students worldwide.
+
+ From interactive environments to package managers to data formats, we build in the open so that anyone can build on what we create.
+ Our tools are the foundation powering research pipelines, commercial data stacks, and classroom notebooks at scale.
+ What we make are digital commons, community-governed, and maintained for the long term.
+
+
+
+
+
+
+
+
+
+ {/* ── Project list ──────────────────────────────────────────────────── */}
+
+ What we build and maintain
+
+
+ {/* ── Jupyter ───────────────────────────────────────────────────────── */}
+
+
+
+ }
+ >
+
Jupyter
+
+
QuantStack is one of the main organizations behind the Jupyter project. We co-created JupyterLab and JupyterLite — the browser-native Jupyter that runs without a server — and drive major features including real-time collaboration, the visual debugger, and AI integration.
+
We also maintain Voilà, xeus, JupyterGIS, and JupyterCAD. JupyterLab reaches over 10 million users worldwide; JupyterLite serves hundreds of thousands of students on minimal infrastructure.
+
+
+
+ {/* ── Mamba ─────────────────────────────────────────────────────────── */}
+
+
+
+ }
+ >
+
Mamba
+
+
We created Mamba, the fast, reliable drop-in replacement for the conda package manager. Mamba delivers dramatically faster dependency solving, better error messages, and full compatibility with the conda ecosystem.
+
Mamba now serves 5 million downloads per month and is the package manager of choice for a large part of the scientific Python community.
+
+
+
+ {/* ── Conda-forge ───────────────────────────────────────────────────── */}
+
+
+
+ }
+ >
+
Conda-forge & emscripten-forge
+
+
We are one of the key organizations supporting conda-forge, the community-led collection of recipes and build infrastructure for the conda/mamba package manager. Conda-forge delivers over 1 billion package downloads per month and is the reference source for the scientific computing ecosystem.
+
We also built emscripten-forge, the package forge that brings the full multilingual scientific computing stack to WebAssembly — the backbone of JupyterLite and notebook.link.
+
+
+
+ {/* ── Apache Arrow & Parquet ────────────────────────────────────────── */}
+
+
+
+ }
+ >
+ Apache Arrow & Parquet
+
+
QuantStack is home to principal maintainers of Apache Arrow's C++ core — the in-memory columnar format that underpins most of the modern data ecosystem, from pandas to Spark to DuckDB.
+
We also co-maintain Apache Parquet, the dominant columnar storage format for analytics workloads, and provide commercial support and custom development across the Arrow ecosystem.
+
+
+
+ {/* ── Xtensor & Xsimd ──────────────────────────────────────────────── */}
+
+
+
+ }
+ >
+
xtensor & xsimd
+
+
We authored xtensor, a multi-dimensional array library for C++ with a NumPy-style API supporting lazy broadcasting, universal functions, and language bindings for Python, R, and Julia.
+
We also created xsimd, a unified API for SIMD operations that has seen wide adoption: Apache Arrow, Firefox, Krita, and Pythran all depend on it for high-performance computing.
+
+
+
+ {/* ── Robotics ──────────────────────────────────────────────────────── */}
+
+
+
+ }
+ >
+
Robotics
+
+
We created RoboStack, the first multi-platform distribution of ROS as conda packages, enabling robotics development on Linux, macOS, and Windows without system dependencies.
+
We maintain jupyter-ros, a JupyterLab-based development environment integrating ROS with the Jupyter ecosystem.
+
+
+
+ {/* ── CTA ───────────────────────────────────────────────────────────── */}
+
}
+ >
+ Support retainer, funded development, or a custom engineering engagement —
+ you work directly with the upstream maintainers of the tools your stack depends on.
+
+ >
+ );
+}
export default function ProjectsPage(): JSX.Element {
- const { siteConfig } = useDocusaurusContext();
return (
- {() => }
+ {() => }
);
diff --git a/src/pages/services.tsx b/src/pages/services.tsx
index d3e5bdc81..725c33d5f 100644
--- a/src/pages/services.tsx
+++ b/src/pages/services.tsx
@@ -1,17 +1,124 @@
-import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
import Layout from "@theme/Layout";
-import Services from "../components/services";
import BrowserOnly from "@docusaurus/BrowserOnly";
import Footer from "../components/footer/Footer";
+import Section from "../components/layout/Section";
+import SectionSeparator from "../components/layout/SectionSeparator";
+import SplitSection from "../components/layout/SplitSection";
+import Banner from "../components/layout/Banner";
+import LinkToContact from "../components/LinkToContact";
+import ScrollDownCTA from "../components/layout/ScrollDownCTA";
+
+import SupportIllustration from "/img/illustrations/support.svg";
+import SpecialProjectsIllustration from "@site/static/img/illustrations/special_projects.svg";
+import FundedIllustration from "/img/illustrations/contact.svg";
+
+function ServicesContent() {
+ return (
+ <>
+ {/* ── Header ────────────────────────────────────────────────────────── */}
+
+ Hire the team that built the tools you depend on
+ Direct access to the upstream maintainers, no intermediaries.
+
+ Major organisations work with us because there is no shortcut to deep expertise.
+ Whether you need a support retainer, a custom feature, or a long-term engineering partner — you talk to the people who wrote the code.
+ No account managers, no escalation queues.
+
+
+
+
+
+
+
+
+
+ {/* ── Services ──────────────────────────────────────────────────────── */}
+
+ }
+ >
+
Support Retainer
+
+ A QuantStack support retainer gives you direct access to the upstream maintainers.
+ We triage issues, review pull requests or give feedback on feasibility, implement POCs and full features and shepherd them until they are merged.
+ We also advise on your architecture, and take ownership of problems distracting your team.
+
+
+ Our clients include many of the world's largest enterprises. We have
+ supported financial firms running Jupyter at scale, aerospace engineers building
+ domain-specific platforms, and research institutions deploying open-source
+ infrastructure for thousands of users.
+
+
+
+
+ }
+ >
+
Custom Engineering
+
+ We take on custom engineering projects that push the boundaries of what open-source can do.
+
+
+ Recent examples: JupyterGIS, a collaborative geospatial platform for ESA and research
+ institutions; JupyterCAD, real-time collaborative 3D CAD editing for Safran Aircraft
+ Engines; notebook.link, our browser-native Jupyter product built on JupyterLite.
+
+
+ Everything we build goes back upstream wherever possible. If you have a hard problem
+ at the intersection of open-source, scientific computing, and engineering — we want
+ to hear about it.
+
+
+
+
+ }
+ >
+
Funded Development
+
+ Need a specific fix or feature in Mamba, JupyterLab, Arrow, or another project we maintain? We implement it upstream.
+
+
+ You get the feature. The community maintains it going forward. No fork, no long-term
+ maintenance burden on your team. This is the most efficient way to get exactly what
+ you need from a project you already depend on.
+
+
+
+ {/* ── CTA ───────────────────────────────────────────────────────────── */}
+
}
+ >
+ Tell us what you're building. We'll tell you honestly whether and how we can help.
+
+ >
+ );
+}
export default function ServicesPage(): JSX.Element {
- const { siteConfig } = useDocusaurusContext();
return (
-
- {() => }
-
-
+ {() => }
+
);
}
diff --git a/src/pages/sponsor.tsx b/src/pages/sponsor.tsx
new file mode 100644
index 000000000..cc1fe9b15
--- /dev/null
+++ b/src/pages/sponsor.tsx
@@ -0,0 +1,45 @@
+import Layout from "@theme/Layout";
+import BrowserOnly from "@docusaurus/BrowserOnly";
+import Footer from "../components/footer/Footer";
+import Section from "../components/layout/Section";
+import SectionSeparator from "../components/layout/SectionSeparator";
+import Banner from "../components/layout/Banner";
+import LinkToContact from "../components/LinkToContact";
+import ScrollDownCTA from "../components/layout/ScrollDownCTA";
+import { MainAreaFundableProjects } from "../components/fundable";
+
+export function FundableContent() {
+ return (
+ <>
+
+ Sponsor open-source work
+ Back the features the scientific community needs.
+ High-demand open-source features with detailed plans already in place — the work is scoped, the need is proven, only funding is missing. Sponsoring through QuantStack means your investment lands upstream and benefits the entire ecosystem. Back a project and get it shipped.
+
+
+
+
+
+
+
+
}
+ >
+ If you have a project in mind that you think would be relevant to our expertise, contact us to discuss it.
+
+ >
+ );
+}
+
+export default function SponsorPage(): JSX.Element {
+ return (
+
+ {() => }
+
+
+ );
+}
diff --git a/src/pages/sponsor/BinaryViewInApacheArrow/GetAQuote.tsx b/src/pages/sponsor/BinaryViewInApacheArrow/GetAQuote.tsx
new file mode 100644
index 000000000..a945b598a
--- /dev/null
+++ b/src/pages/sponsor/BinaryViewInApacheArrow/GetAQuote.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import GetAQuotePage from '@site/src/components/fundable/GetAQuotePage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/src/pages/sponsor/BinaryViewInApacheArrow/index.tsx b/src/pages/sponsor/BinaryViewInApacheArrow/index.tsx
new file mode 100644
index 000000000..876857af5
--- /dev/null
+++ b/src/pages/sponsor/BinaryViewInApacheArrow/index.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import LargeProjectCardPage from '@site/src/components/fundable/LargeProjectCardPage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
diff --git a/src/pages/sponsor/Decimal32InApacheArrow/GetAQuote.tsx b/src/pages/sponsor/Decimal32InApacheArrow/GetAQuote.tsx
new file mode 100644
index 000000000..a945b598a
--- /dev/null
+++ b/src/pages/sponsor/Decimal32InApacheArrow/GetAQuote.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import GetAQuotePage from '@site/src/components/fundable/GetAQuotePage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/src/pages/sponsor/Decimal32InApacheArrow/index.tsx b/src/pages/sponsor/Decimal32InApacheArrow/index.tsx
new file mode 100644
index 000000000..876857af5
--- /dev/null
+++ b/src/pages/sponsor/Decimal32InApacheArrow/index.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import LargeProjectCardPage from '@site/src/components/fundable/LargeProjectCardPage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
diff --git a/src/pages/sponsor/EmscriptenForgePackageRequests/GetAQuote.tsx b/src/pages/sponsor/EmscriptenForgePackageRequests/GetAQuote.tsx
new file mode 100644
index 000000000..963582a82
--- /dev/null
+++ b/src/pages/sponsor/EmscriptenForgePackageRequests/GetAQuote.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import GetAQuotePage from '@site/src/components/fundable/GetAQuotePage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
diff --git a/src/pages/sponsor/EmscriptenForgePackageRequests/index.tsx b/src/pages/sponsor/EmscriptenForgePackageRequests/index.tsx
new file mode 100644
index 000000000..876857af5
--- /dev/null
+++ b/src/pages/sponsor/EmscriptenForgePackageRequests/index.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import LargeProjectCardPage from '@site/src/components/fundable/LargeProjectCardPage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
diff --git a/src/pages/sponsor/Float16InApacheArrow/GetAQuote.tsx b/src/pages/sponsor/Float16InApacheArrow/GetAQuote.tsx
new file mode 100644
index 000000000..a945b598a
--- /dev/null
+++ b/src/pages/sponsor/Float16InApacheArrow/GetAQuote.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import GetAQuotePage from '@site/src/components/fundable/GetAQuotePage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/src/pages/sponsor/Float16InApacheArrow/index.tsx b/src/pages/sponsor/Float16InApacheArrow/index.tsx
new file mode 100644
index 000000000..876857af5
--- /dev/null
+++ b/src/pages/sponsor/Float16InApacheArrow/index.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import LargeProjectCardPage from '@site/src/components/fundable/LargeProjectCardPage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
diff --git a/src/pages/sponsor/Float16SupportInXsimd/GetAQuote.tsx b/src/pages/sponsor/Float16SupportInXsimd/GetAQuote.tsx
new file mode 100644
index 000000000..963582a82
--- /dev/null
+++ b/src/pages/sponsor/Float16SupportInXsimd/GetAQuote.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import GetAQuotePage from '@site/src/components/fundable/GetAQuotePage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
diff --git a/src/pages/sponsor/Float16SupportInXsimd/index.tsx b/src/pages/sponsor/Float16SupportInXsimd/index.tsx
new file mode 100644
index 000000000..876857af5
--- /dev/null
+++ b/src/pages/sponsor/Float16SupportInXsimd/index.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import LargeProjectCardPage from '@site/src/components/fundable/LargeProjectCardPage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
diff --git a/src/pages/sponsor/JupyterGISRasterProcessing/GetAQuote.tsx b/src/pages/sponsor/JupyterGISRasterProcessing/GetAQuote.tsx
new file mode 100644
index 000000000..963582a82
--- /dev/null
+++ b/src/pages/sponsor/JupyterGISRasterProcessing/GetAQuote.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import GetAQuotePage from '@site/src/components/fundable/GetAQuotePage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
diff --git a/src/pages/sponsor/JupyterGISRasterProcessing/index.tsx b/src/pages/sponsor/JupyterGISRasterProcessing/index.tsx
new file mode 100644
index 000000000..876857af5
--- /dev/null
+++ b/src/pages/sponsor/JupyterGISRasterProcessing/index.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import LargeProjectCardPage from '@site/src/components/fundable/LargeProjectCardPage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
diff --git a/src/pages/sponsor/JupyterGISToolsForPythonAPI/GetAQuote.tsx b/src/pages/sponsor/JupyterGISToolsForPythonAPI/GetAQuote.tsx
new file mode 100644
index 000000000..a945b598a
--- /dev/null
+++ b/src/pages/sponsor/JupyterGISToolsForPythonAPI/GetAQuote.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import GetAQuotePage from '@site/src/components/fundable/GetAQuotePage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/src/pages/sponsor/JupyterGISToolsForPythonAPI/index.tsx b/src/pages/sponsor/JupyterGISToolsForPythonAPI/index.tsx
new file mode 100644
index 000000000..876857af5
--- /dev/null
+++ b/src/pages/sponsor/JupyterGISToolsForPythonAPI/index.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import LargeProjectCardPage from '@site/src/components/fundable/LargeProjectCardPage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
diff --git a/src/pages/sponsor/MatrixOperationsInXtensor/GetAQuote.tsx b/src/pages/sponsor/MatrixOperationsInXtensor/GetAQuote.tsx
new file mode 100644
index 000000000..a945b598a
--- /dev/null
+++ b/src/pages/sponsor/MatrixOperationsInXtensor/GetAQuote.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import GetAQuotePage from '@site/src/components/fundable/GetAQuotePage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/src/pages/sponsor/MatrixOperationsInXtensor/index.tsx b/src/pages/sponsor/MatrixOperationsInXtensor/index.tsx
new file mode 100644
index 000000000..876857af5
--- /dev/null
+++ b/src/pages/sponsor/MatrixOperationsInXtensor/index.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import LargeProjectCardPage from '@site/src/components/fundable/LargeProjectCardPage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
diff --git a/src/pages/sponsor/NbconvertModernization/GetAQuote.tsx b/src/pages/sponsor/NbconvertModernization/GetAQuote.tsx
new file mode 100644
index 000000000..a945b598a
--- /dev/null
+++ b/src/pages/sponsor/NbconvertModernization/GetAQuote.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import GetAQuotePage from '@site/src/components/fundable/GetAQuotePage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/src/pages/sponsor/NbconvertModernization/index.tsx b/src/pages/sponsor/NbconvertModernization/index.tsx
new file mode 100644
index 000000000..876857af5
--- /dev/null
+++ b/src/pages/sponsor/NbconvertModernization/index.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import LargeProjectCardPage from '@site/src/components/fundable/LargeProjectCardPage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
diff --git a/src/pages/sponsor/ParquetNullOptimizations/GetAQuote.tsx b/src/pages/sponsor/ParquetNullOptimizations/GetAQuote.tsx
new file mode 100644
index 000000000..a945b598a
--- /dev/null
+++ b/src/pages/sponsor/ParquetNullOptimizations/GetAQuote.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import GetAQuotePage from '@site/src/components/fundable/GetAQuotePage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/src/pages/sponsor/ParquetNullOptimizations/index.tsx b/src/pages/sponsor/ParquetNullOptimizations/index.tsx
new file mode 100644
index 000000000..876857af5
--- /dev/null
+++ b/src/pages/sponsor/ParquetNullOptimizations/index.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import LargeProjectCardPage from '@site/src/components/fundable/LargeProjectCardPage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
diff --git a/src/pages/sponsor/RunEndEncodedInApacheArrow/GetAQuote.tsx b/src/pages/sponsor/RunEndEncodedInApacheArrow/GetAQuote.tsx
new file mode 100644
index 000000000..a945b598a
--- /dev/null
+++ b/src/pages/sponsor/RunEndEncodedInApacheArrow/GetAQuote.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import GetAQuotePage from '@site/src/components/fundable/GetAQuotePage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/src/pages/sponsor/RunEndEncodedInApacheArrow/index.tsx b/src/pages/sponsor/RunEndEncodedInApacheArrow/index.tsx
new file mode 100644
index 000000000..876857af5
--- /dev/null
+++ b/src/pages/sponsor/RunEndEncodedInApacheArrow/index.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import LargeProjectCardPage from '@site/src/components/fundable/LargeProjectCardPage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
diff --git a/src/pages/sponsor/SVE2SupportInXsimd/GetAQuote.tsx b/src/pages/sponsor/SVE2SupportInXsimd/GetAQuote.tsx
new file mode 100644
index 000000000..a945b598a
--- /dev/null
+++ b/src/pages/sponsor/SVE2SupportInXsimd/GetAQuote.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import GetAQuotePage from '@site/src/components/fundable/GetAQuotePage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/src/pages/sponsor/SVE2SupportInXsimd/index.tsx b/src/pages/sponsor/SVE2SupportInXsimd/index.tsx
new file mode 100644
index 000000000..876857af5
--- /dev/null
+++ b/src/pages/sponsor/SVE2SupportInXsimd/index.tsx
@@ -0,0 +1,9 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import LargeProjectCardPage from '@site/src/components/fundable/LargeProjectCardPage';
+
+export default function FundablePage() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+ );
+}
diff --git a/src/pages/sponsor/_projectsDetails.ts b/src/pages/sponsor/_projectsDetails.ts
new file mode 100644
index 000000000..b6916b9ce
--- /dev/null
+++ b/src/pages/sponsor/_projectsDetails.ts
@@ -0,0 +1,171 @@
+import NbconvertModernizationMD from "@site/src/pages/sponsor/descriptions/NbconvertModernization.md"
+import JupyterGISRasterProcessingMD from "@site/src/pages/sponsor/descriptions/JupyterGISRasterProcessing.md"
+import JupyterGISToolsForPythonAPIMD from "@site/src/pages/sponsor/descriptions/JupyterGISToolsForPythonAPI.md"
+import EmscriptenForgePackageRequestsMD from "@site/src/pages/sponsor/descriptions/EmscriptenForgePackageRequests.md"
+import SVE2SupportInXsimdMD from "@site/src/pages/sponsor/descriptions/SVE2SupportInXsimd.md"
+import Float16SupportInXsimdMD from "@site/src/pages/sponsor/descriptions/Float16SupportInXsimd.md"
+import MatrixOperationsInXtensorMD from "@site/src/pages/sponsor/descriptions/MatrixOperationsInXtensor.md"
+import BinaryViewInArrowCppMD from "@site/src/pages/sponsor/descriptions/BinaryViewInArrowCpp.md"
+import Decimal32InArrowCppMD from "@site/src/pages/sponsor/descriptions/Decimal32InArrowCpp.md"
+import Float16InArrowCppMD from "@site/src/pages/sponsor/descriptions/Float16InArrowCpp.md"
+import RunEndEncodedInArrowCppMD from "@site/src/pages/sponsor/descriptions/RunEndEncodedInArrowCpp.md"
+import ParquetNullOptimizationsMD from "@site/src/pages/sponsor/descriptions/ParquetNullOptimizations.md"
+
+export const fundableProjectsDetails = {
+ jupyterEcosystem: [
+ {
+ category: "Jupyter Ecosystem",
+ title: "Modernizing nbconvert",
+ pageName: "NbconvertModernization",
+ shortDescription: "Conversion of Jupyter notebooks to PDF currently relies on nbconvert in the backend, which in turns uses a headless browser for producing the PDF. We propose to directly perform the PDF conversion in the user's browser, which will simplify the architecture and make it function with JupyterLite.",
+ description: NbconvertModernizationMD,
+ price: "30 000 €",
+ maxNbOfFunders: 1,
+ currentNbOfFunders: 0,
+ currentFundingPercentage: 0,
+ note: "Note: Costs and features can be further adapted following discussion with the funding organization. Open-source under relevant licenses. The funding organization will be credited in communication about the project.",
+ repoLink: "https://github.com/jupyter/nbconvert"
+ },
+ {
+ category: "Jupyter Ecosystem",
+ title: "Raster processing tools in JupyterGIS",
+ pageName: "JupyterGISRasterProcessing",
+ shortDescription: "JupyterGIS currently offers a set of vector processing and conversion tools. These capabilities are powered by a GDAL WebAssembly (WASM) build running in the browser. We will work on extending support to raster processing tools using the same underlying technology.",
+ description: JupyterGISRasterProcessingMD,
+ price: "TBD",
+ maxNbOfFunders: 1,
+ currentNbOfFunders: 0,
+ currentFundingPercentage: 0,
+ repoLink: "https://github.com/geojupyter/jupytergis"
+ },
+ {
+ category: "Jupyter Ecosystem",
+ title: "Bringing processing tools to the JupyterGIS Python API",
+ pageName: "JupyterGISToolsForPythonAPI",
+ shortDescription: "JupyterGIS currently supports several vector processing and conversion tools, currently available only through the JupyterGIS user interface. We plan to extend these capabilities to the JupyterGIS Python API, enabling users to access the same processing tools programmatically. ",
+ description: JupyterGISToolsForPythonAPIMD,
+ price: "10 000 €",
+ maxNbOfFunders: 1,
+ currentNbOfFunders: 0,
+ currentFundingPercentage: 0,
+ repoLink: "https://github.com/geojupyter/jupytergis"
+ },
+ ],
+ packageManagement: [
+ {
+ category: "Package Management",
+ title: "Package requests for emscripten-forge",
+ pageName: "EmscriptenForgePackageRequests",
+ shortDescription: "Emscripten-forge is a conda package distribution specifically designed for WebAssembly. While the number of available emscripten-forge packages is growing quickly, many packages are still missing from the ecosystem. We will be working on adding new packages upon request.",
+ description: EmscriptenForgePackageRequestsMD,
+ price: "TBD",
+ maxNbOfFunders: 1,
+ currentNbOfFunders: 0,
+ currentFundingPercentage: 0,
+ repoLink: "https://github.com/mamba-org/mamba"
+ }],
+
+ scientificComputing: [
+ {
+ category: "Scientific Computing",
+ title: "SVE2 support in xsimd",
+ pageName: "SVE2SupportInXsimd",
+ shortDescription: "xsimd is a C++ scientific library that abstracts low-level high performances computing primitives across different hardwares. We will add support for the latest SVE2 generation of ARM CPUs.",
+ description: SVE2SupportInXsimdMD,
+ price: "30 000 €",
+ maxNbOfFunders: 2,
+ currentNbOfFunders: 0,
+ currentFundingPercentage: 0,
+ repoLink: "https://github.com/xtensor-stack/xsimd"
+ },
+ {
+ category: "Scientific Computing",
+ title: "Float16 support in xsimd",
+ pageName: "Float16SupportInXsimd",
+ shortDescription: "xsimd is a C++ scientific library that abstracts low-level high performances computing primitives across different hardwares. We will add vectorized support for half-precision 16 bits float operations where hardware supports them, and correct fallbacks elsewhere.",
+ description: Float16SupportInXsimdMD,
+ price: "20 000 €",
+ maxNbOfFunders: 2,
+ currentNbOfFunders: 0,
+ currentFundingPercentage: 0,
+ repoLink: "https://github.com/xtensor-stack/xsimd"
+ },
+ {
+ category: "Scientific Computing",
+ title: "Implementing Kazushige Goto Algorithms for Matrix Operations in xtensor",
+ pageName: "MatrixOperationsInXtensor",
+ shortDescription: "This project aims to integrate Kazushige Goto’s highly optimized matrix multiplication algorithms into the xtensor framework, leveraging the xsimd library for SIMD acceleration.",
+ description: MatrixOperationsInXtensorMD,
+ price: "45 000 €",
+ maxNbOfFunders: 1,
+ currentNbOfFunders: 0,
+ currentFundingPercentage: 0,
+ repoLink: "https://github.com/xtensor-stack/xtensor"
+ }
+ ],
+
+ apacheArrow: [
+ {
+ category: "Apache Arrow and Parquet",
+ title: "Complete BinaryView / StringView support in Arrow C++",
+ pageName: "BinaryViewInApacheArrow",
+ shortDescription: "BinaryView is a more recent and more efficient alternative to Arrow's standard Binary type. It allows for inlined storage of short strings and fast prefix comparison.",
+ description: BinaryViewInArrowCppMD,
+ price: "TBD",
+ maxNbOfFunders: 4,
+ currentNbOfFunders: 0,
+ currentFundingPercentage: 0,
+ repoLink: "https://github.com/apache/arrow"
+ },
+ {
+ category: "Apache Arrow and Parquet",
+ title: "Complete Decimal32 / Decimal64 support in Arrow C++",
+ pageName: "Decimal32InApacheArrow",
+ shortDescription: "Decimal32 and Decimal64 are more compact and computationally more efficient data types than the standard Decimal128.",
+ description: Decimal32InArrowCppMD,
+ price: "TBD",
+ maxNbOfFunders: 2,
+ currentNbOfFunders: 0,
+ currentFundingPercentage: 0,
+ repoLink: "https://github.com/apache/arrow"
+ },
+ {
+ category: "Apache Arrow and Parquet",
+ title: "Complete Float16 support in Arrow C++",
+ pageName: "Float16InApacheArrow",
+ shortDescription: "Float16 is a more compact data type than Float32 and Float64, and sees growing usage in applications where its limited precision is sufficient.",
+ description: Float16InArrowCppMD,
+ price: "TBD",
+ maxNbOfFunders: 2,
+ currentNbOfFunders: 0,
+ currentFundingPercentage: 0,
+ repoLink: "https://github.com/apache/arrow"
+ },
+ {
+ category: "Apache Arrow and Parquet",
+ title: "Complete Run-End-Encoded support in Arrow C++",
+ pageName: "RunEndEncodedInApacheArrow",
+ shortDescription: "Like dictionary encoding, run-end-encoding allows representing some kinds of data more efficiently.",
+ description: RunEndEncodedInArrowCppMD,
+ price: "TBD",
+ maxNbOfFunders: 4,
+ currentNbOfFunders: 0,
+ currentFundingPercentage: 0,
+ repoLink: "https://github.com/apache/arrow"
+ },
+ {
+ category: "Apache Arrow and Parquet",
+ title: "Parquet reader optimizations",
+ pageName: "ParquetNullOptimizations",
+ shortDescription: "Converting Parquet optional values to nullable Arrow data is often a performance bottleneck. We will optimize that step for the most common cases.",
+ description: ParquetNullOptimizationsMD,
+ price: "TBD",
+ maxNbOfFunders: 1,
+ currentNbOfFunders: 0,
+ currentFundingPercentage: 0,
+ repoLink: "https://github.com/apache/arrow"
+ }
+ ]
+
+}
+
diff --git a/src/pages/sponsor/descriptions/BinaryViewInArrowCpp.md b/src/pages/sponsor/descriptions/BinaryViewInArrowCpp.md
new file mode 100644
index 000000000..c35fcd511
--- /dev/null
+++ b/src/pages/sponsor/descriptions/BinaryViewInArrowCpp.md
@@ -0,0 +1,43 @@
+#### Overview
+
+Apache Arrow is the universal columnar format and multi-language toolbox for fast data interchange and in-memory analytics.
+
+Representation of string and binary data in Arrow traditionally uses the Binary layout, where the entire string data resides in a separate buffer that is accessed using indirect indexing from a buffer of offsets.
+
+Recently, the Arrow project added the Binary View layout, a more efficient layout inspired from modern execution engines where the beginning of each string is packed directly within the offsets buffer. This allows short strings to be read and processed directly without going through an additional indirection.
+
+However, while basic support is present, Binary View is not universally supported by all Arrow components.
+
+We propose to finish implementing support for Binary View and String View types in all components of Arrow C++:
+
+* scalar compute kernels:
+ - `equal`, `less_equal`, etc.
+ - `is_in`, `index_in`
+ - `ascii_*`, `binary_*`, `utf8_*`
+ - `string_is_ascii`
+ - `count_substring`
+ - `extract_regex`, `extract_regex_span`
+ - `split_pattern`, `split_pattern_regex`
+ - `coalesce`
+
+* vector compute kernels:
+ - `take`, `filter`, `scatter`
+ - `run_end_encode`, `run_end_decode`
+ - `sort_indices`, `rank`, `rank_normal`, `rank_quantile`
+ - `partition_nth_indices`
+ - `select_k_unstable`
+ - `replace_with_mask`
+ - `fill_null_forward`, `fill_null_backward`, `drop_null`
+
+* aggregate compute kernels:
+ - `count_distinct`
+ - `first`, `last`, `min`, `max`
+ - `index`
+
+* CSV reader and writer
+
+* ORC reader and writer
+
+Funders can decide to fund the entire package, or choose the components they are interested in.
+
+##### Are you interested in this project? Either entirely or partially, contact us for more information on how to help us fund it.
diff --git a/src/pages/sponsor/descriptions/Decimal32InArrowCpp.md b/src/pages/sponsor/descriptions/Decimal32InArrowCpp.md
new file mode 100644
index 000000000..29c0bdffe
--- /dev/null
+++ b/src/pages/sponsor/descriptions/Decimal32InArrowCpp.md
@@ -0,0 +1,40 @@
+#### Overview
+
+Apache Arrow is the universal columnar format and multi-language toolbox for fast data interchange and in-memory analytics.
+
+Fixed-width decimal data in Arrow is usually represented by the Decimal128 data type.
+This data type has non-trivial memory costs (16 bytes per value) and computational costs (operations on 128-bit integers must be emulated on most if not all architectures).
+
+Arrow recently gained Decimal32 and Decimal64 data types which, as their names suggest, encode fixed-width decimal data more compactly.
+Decimal32 (resp. Decimal64) is able to represent up to 9 (resp. 18) decimal digits of precision, which is sufficient in many applications.
+
+However, while basic support is present, Decimal32 and Decimal64 are not universally supported by all Arrow components.
+
+We propose to finish implementing support for Decimal32 and Decimal64 types in all components of Arrow C++:
+
+* scalar compute kernels:
+ - `abs`
+ - `round`
+ - `is_in`, `index_in`
+ - `coalesce`
+ - `min_element_wise`, `max_element_wise`
+
+* vector compute kernels:
+ - `dictionary_encode`, `unique`, `value_counts`
+ - `pairwise_diff`
+ - `select_k_unstable`
+ - `replace_with_mask`
+ - `fill_null_forward`, `fill_null_backward`
+
+* aggregate compute kernels:
+ - `sum`, `mean`, `mode`, `tdigest`
+ - `first`, `last`, `min`, `max`
+ - `index`
+
+* CSV reader and writer
+
+* ORC reader and writer
+
+Funders can decide to fund the entire package, or choose the components they are interested in.
+
+##### Are you interested in this project? Either entirely or partially, contact us for more information on how to help us fund it
diff --git a/src/pages/sponsor/descriptions/EmscriptenForgePackageRequests.md b/src/pages/sponsor/descriptions/EmscriptenForgePackageRequests.md
new file mode 100644
index 000000000..0a1cd4576
--- /dev/null
+++ b/src/pages/sponsor/descriptions/EmscriptenForgePackageRequests.md
@@ -0,0 +1,32 @@
+#### Overview
+
+Emscripten-forge is a conda package distribution tailored for WebAssembly, enabling seamless integration with JupyterLite and [notebook.link](https://notebook.link). By combining Emscripten-forge with these platforms, users can deploy a fully functional, preconfigured scientific computing environment in the browser—including essential packages like NumPy, Pandas, Matplotlib, SciPy and many more.
+
+This ecosystem unlocks new possibilities for interactive, client-side data science, education, and collaboration, without requiring server-side infrastructure. Packages built with Emscripten-forge will be immediately available in JupyterLite and [notebook.link](https://notebook.link), making them accessible for shareable, collaborative notebooks.
+
+While the Emscripten-forge ecosystem is rapidly expanding, many critical packages are still missing.
+
+**We are actively seeking funding to accelerate the growth of this ecosystem.**
+
+##### Why Contribute?
+
+Empower Web-Based Science: Enable researchers, educators, and developers to run complex scientific workflows directly in the browser.
+
+Democratize Access: Remove barriers to entry by eliminating the need for local installations or cloud resources.
+Enhance Collaboration: Make advanced scientific tools available in notebook.link, fostering real-time collaboration and sharing.
+
+Shape the Future: Help define the next generation of web-native scientific computing tools.
+
+##### Key Opportunities
+
+We are prioritizing the following projects, but welcome suggestions for others:
+
+| Project | Impact |
+| --------------------------------- | ----------------------- |
+| GNU Octave Packages. | Complement the [xeus-octave](https://github.com/jupyter-xeus/xeus-octave) kernel by packaging Octave’s [official package ecosystem](https://gnu-octave.github.io/packages/). |
+| Bioconductor R Packages | Bring bioinformatics and computational biology tools to the browser. |
+| PyTorch | Enable machine learning workflows in the browser. |
+| Custom Requests | Have a specific package in mind? Let’s discuss how to prioritize it! |
+
+
+##### Are you interested in this project? Either entirely or partially, contact us for more information on how to help us fund it.
diff --git a/src/pages/sponsor/descriptions/Float16InArrowCpp.md b/src/pages/sponsor/descriptions/Float16InArrowCpp.md
new file mode 100644
index 000000000..f5411ecb2
--- /dev/null
+++ b/src/pages/sponsor/descriptions/Float16InArrowCpp.md
@@ -0,0 +1,37 @@
+#### Overview
+
+Apache Arrow is the universal columnar format and multi-language toolbox for fast data interchange and in-memory analytics.
+
+Arrow offers three floating-point data types based on the standard IEEE binary floating-point representation:
+Float16, Float32 and Float64.
+
+In some workloads, 16-bit floating-point numbers have become a popular alternative to 32-bit and 64-bit representations, bringing better memory footprint and potentially better performance (when hardware support is present).
+
+However, while basic support is present, Float16 is not universally supported in all Arrow C++ components because of limited language support for 16-bit floating-point numbers.
+
+We propose to finish implementing support for Float16 in all components of Arrow C++:
+
+* scalar compute kernels:
+ - arithmetic: `abs`, `add`, etc.
+ - comparisons: `equal`, etc.
+ - math: `sqrt`, etc.
+ - `is_in`, `index_in`
+
+* vector compute kernels:
+ - `sort_indices`, `rank`, `rank_normal`, `rank_quantile`
+ - `partition_nth_indices`
+ - `select_k_unstable`
+
+* aggregate compute kernels:
+ - `sum`, `product`, `mean`, `mode`, `quantile`, `tdigest`
+ - `variance`, `stddev`, `skew`, `kurtosis`
+ - `first`, `last`, `min`, `max`
+ - `index`
+
+* CSV reader
+
+* ORC reader and writer
+
+Funders can decide to fund the entire package, or choose the components they are interested in.
+
+##### Are you interested in this project? Either entirely or partially, contact us for more information on how to help us fund it.
diff --git a/src/pages/sponsor/descriptions/Float16SupportInXsimd.md b/src/pages/sponsor/descriptions/Float16SupportInXsimd.md
new file mode 100644
index 000000000..4a5f576f1
--- /dev/null
+++ b/src/pages/sponsor/descriptions/Float16SupportInXsimd.md
@@ -0,0 +1,58 @@
+#### Overview
+
+Xsimd is a C++ header-only library that abstracts SIMD (vectorization) intrinsics behind a single, generic API.
+The same code — `xsimd::batch
` — compiles to optimal machine code on x86 SSE/AVX, ARM NEON SVE, RISC-V, and WebAssembly, with no runtime overhead.
+When an intrinsic is missing on a given target, xsimd falls back gracefully rather than failing or leaving the developer to write platform-specific branches.
+This is why projects like Mozilla Firefox, Apache Arrow, Meta Velox, KDE Krita, and Pythran have adopted it as their vectorization layer.
+
+FP16 — the 16-bit half-precision floating point format — has become a first-class data type in modern computing.
+It is the default storage format for large language model weights, the standard precision for neural network inference,
+and increasingly the format of choice wherever memory bandwidth is the binding constraint.
+Yet consuming or producing FP16 data from C++ SIMD code today requires writing painful, platform-specific intrinsics by hand.
+xsimd currently has no FP16 support, forcing its users to drop out of the generic API the moment they touch half-precision data.
+
+We propose to add vectorized FP16 support to xsimd — native FP16 operations where hardware supports them, and correct fallbacks elsewhere.
+
+#### Why FP16 Matters
+
+**Memory bandwidth is a bottleneck.** Modern CPUs and GPUs are not compute-bound — they are memory-bandwidth-bound.
+FP16 cuts data size in half versus FP32.
+This means twice as many values fit in cache, twice as many elements move per memory transaction,
+and large working can perform more with L2 or L3 caches without accessing RAM.
+The bandwidth saving alone, before any compute consideration, is the primary reason the format matters.
+
+**SIMD registers double the throughput.** With native arithmetic support, FP16 operation double the number
+of floating point numbers processed per CPU cycle when precision is not an issue.
+
+**FP16 is widely used in AI.** Transformer weights, KV caches, activations, and embeddings are all routinely stored in FP16.
+Any library that processes or pipelines this data at any point of the training and inference pipeline must be able to consume and produce FP16 buffers efficiently.
+Without xsimd FP16 support, these projects become a limiting factor in an otheriwse highly optimized data transformation.
+
+## Hardware Landscape
+
+FP16 conversion and arithmetic are now widely available across all major SIMD families:
+- **x86**: Early on, the `f16c` feature introduced SIMD convertion from FP16 and FP32 for efficient storage, while arithmetic would still be performed in FP32.
+ With the AVX-512 generation, support for doing operations directly in FP16 is introduce with sigificant speedups.
+- **ARM**: FP16 support becomes mandatory in latest ARM generations (ARM v8.2-a) with arithmetic, convertion, *etc*.
+ This affects NEON operations on modern smartphones and all Apple silicon M-chips.
+ Coverage is extended server side with both SVE and SVE2 supporting FP16.
+
+#### Proposed Work
+
+This proposal covers foundational FP16 support: native FP16 operations on platforms that provide hardware acceleration, and correct, efficient fallbacks everywhere else.
+
+Concretely, this means:
+- A new `xsimd::batch` type (or equivalent half-precision batch specialization) that can be loaded from and stored to FP16 buffers.
+- Support for converting from and to `batch`, mapping to the optimal hardware instruction where available, and a correct SIMD algorithm elsewhere.
+- Native FP16 arithmetic operations — add, multiply, FMA, min, max, and comparison — on backends that provide hardware support, with FP32-based fallbacks on those that do not
+
+#### Impact
+
+Funding this development will directly open xsimd to the rapidly growing landscape of LLM and machine
+learning workflows: local inference engines, model weight processing, and embedding pipelines.
+
+Beyond new workloads, this will benefit existing projects using xsimd that already handle FP16 data.
+For instance Apache Arrow and Parquet process half-precision columns today without hardware-optimized SIMD support.
+These projects stand to benefit directly and with small integration effort.
+
+##### Are you interested in this project? Either entirely or partially, contact us for more information on how to help us fund it.
diff --git a/src/pages/sponsor/descriptions/JupyterGISRasterProcessing.md b/src/pages/sponsor/descriptions/JupyterGISRasterProcessing.md
new file mode 100644
index 000000000..3c3735185
--- /dev/null
+++ b/src/pages/sponsor/descriptions/JupyterGISRasterProcessing.md
@@ -0,0 +1,18 @@
+#### Overview
+
+JupyterGIS provides a powerful suite of vector geospatial processing tools - such as buffer creation, centroid calculation, and convex hull generation—directly in the browser. These capabilities are enabled by a GDAL WebAssembly (WASM) build, eliminating the need for server-side processing or local installations.
+
+Building on this foundation, we are now expanding support to raster processing tools, unlocking even more geospatial workflows in JupyterLite and notebook.link. This will enable users to perform complex raster operations entirely client-side, making geospatial analysis more accessible, collaborative, and scalable.
+
+##### Upcoming Raster Processing Features
+
+We are prioritizing the following features, but welcome community input to shape the roadmap:
+
+| Feature | Use Case |
+| ------------------ | -------- |
+| Clipping by Extent | Extract raster data for a specific geographic area. |
+| Clipping by Mask Layer | Use vector layers to define custom clipping boundaries. |
+| Generating Contours | Create contour lines from elevation or other continuous raster datasets. |
+| Polygonizing Raster Data | Convert raster cells into vector polygons for further analysis. |
+
+##### Are you interested in this project? Either entirely or partially, contact us for more information on how to help us fund it.
\ No newline at end of file
diff --git a/src/pages/sponsor/descriptions/JupyterGISToolsForPythonAPI.md b/src/pages/sponsor/descriptions/JupyterGISToolsForPythonAPI.md
new file mode 100644
index 000000000..55745c904
--- /dev/null
+++ b/src/pages/sponsor/descriptions/JupyterGISToolsForPythonAPI.md
@@ -0,0 +1,6 @@
+#### Overview
+JupyterGIS currently supports several vector processing and conversion tools such as buffer creation, centroid computation, and convex hull generation, similar to what QGIS offers. These features are powered by a GDAL WebAssembly (WASM) build and are currently available only through the JupyterGIS user interface.
+
+We plan to extend these capabilities to the JupyterGIS Python API, enabling users to access the same processing tools programmatically, just as they would via the UI. This functionality will be implemented using the GDAL Python bindings.
+
+##### Are you interested in this project? Either entirely or partially, contact us for more information on how to help us fund it.
\ No newline at end of file
diff --git a/src/pages/sponsor/descriptions/MatrixOperationsInXtensor.md b/src/pages/sponsor/descriptions/MatrixOperationsInXtensor.md
new file mode 100644
index 000000000..523c4af16
--- /dev/null
+++ b/src/pages/sponsor/descriptions/MatrixOperationsInXtensor.md
@@ -0,0 +1,19 @@
+#### Overview
+This project aims to integrate Kazushige Goto’s highly optimized matrix multiplication algorithms into the [xtensor](https://github.com/xtensor-stack/xtensor/) framework, leveraging the [xsimd](https://github.com/xtensor-stack/xsimd/) library for SIMD acceleration.
+
+##### Background
+
+The GOTO algorithms, formalized by Kazushige Goto and Robert van de Geijn in their landmark paper "Anatomy of High-Performance Matrix Multiplication", are the algorithmic foundations underlying high-performance libraries such as GotoBLAS and OpenBLAS. The algorithms achieve near-peak CPU throughput through a principled exploitation of the memory hierarchy.
+
+xtensor library is a popular C++ library for numerical analysis with a focus on multi-dimensional arrays and broadcasting, inspired by NumPy. xtensor leverages SIMD acceleration through the xsimd library and offers language bindings for Python, Julia and R.
+
+By integrating Goto's algorithms into xtensor and using xsimd for SIMD optimizations, we can provide users with faster matrix operations, especially for large-scale computations.
+
+##### Objectives
+
+- Study and understand Kazushige Goto's matrix multiplication algorithms.
+- Implement these algorithms in C++ using xsimd for SIMD acceleration. This implementation could be done in a way that is not tied to the xtensor codebase for better reusability.
+- Integrate the implementation into the xtensor framework.
+- Benchmark the performance against existing xtensor matrix operations and other libraries like Eigen and BLAS.
+- Document the implementation and provide examples for users.
+
diff --git a/src/pages/sponsor/descriptions/NbconvertModernization.md b/src/pages/sponsor/descriptions/NbconvertModernization.md
new file mode 100644
index 000000000..a6c1a976b
--- /dev/null
+++ b/src/pages/sponsor/descriptions/NbconvertModernization.md
@@ -0,0 +1,8 @@
+#### Overview
+Conversion of Jupyter notebooks to PDF currently relies on nbconvert in the backend, which in turns uses a headless browser for producing the PDF. We propose to directly perform the PDF conversion in the user's browser, which will simplify the architecture and make it function with JupyterLite.
+
+Nbconvert heavily relies on Jinja2 templates for conversion to different formats.
+
+We will utilize a JavaScript implementation of Jinja2 covering the required features of Jinja to produce a frontend version of nbconvert that does not require Python but still provides a good coverage of the nbconvert features, including the use of custom templates.
+
+##### Are you interested in this project? Either entirely or partially, contact us for more information on how to help us fund it.
\ No newline at end of file
diff --git a/src/pages/sponsor/descriptions/ParquetNullOptimizations.md b/src/pages/sponsor/descriptions/ParquetNullOptimizations.md
new file mode 100644
index 000000000..77767d456
--- /dev/null
+++ b/src/pages/sponsor/descriptions/ParquetNullOptimizations.md
@@ -0,0 +1,37 @@
+#### Overview
+
+Apache Parquet is an open source, column-oriented data file format designed for
+efficient data storage and retrieval. Together with Apache Arrow for in-memory data,
+it has become the *de facto* standard for efficient columnar analytics.
+
+While Parquet and Arrow are most often used together, they have incompatible physical
+representations of data with optional values: data where some values can be
+missing or "null". While Arrow uses a validity bitmap for each schema field and nesting level,
+Parquet condenses that information in a more sophisticated structure called definition
+levels (borrowing ideas from Google's Dremel project).
+
+Converting between those two representations is non-trivial and often turns out
+a performance bottleneck when reading a Parquet file as in-memory Arrow data.
+Even columns that practically do not contain any nulls can still suffer from it if
+the data is declared nullable (optional) at the schema level.
+
+We propose to optimize the conversion of null values from Parquet in Arrow C++
+for flat (non-nested) data:
+
+1. decoding Parquet definition levels directly into an Arrow validity bitmap, rather than using an
+ intermediate representation as 16-bit integers;
+
+2. avoiding decoding definition levels entirely when a data page's statistics shows
+ it cannot contain any nulls (or, conversely, when it cannot contain any non-null values).
+
+As a subsequent task, these optimizations may be extended so as to apply to schemas
+with moderate amounts of nesting.
+
+This work will benefit applications using Arrow C++ or any of its language
+bindings (such as PyArrow, R-Arrow...).
+
+Depending on the typology of Parquet data, this could make Parquet reading 2x
+faster, even more in some cases. If you are unsure whether your workload could
+benefit, we can discuss this based on sample Parquet files you provide us.
+
+##### Are you interested in this project? Either entirely or partially, contact us for more information on how to help us fund it
diff --git a/src/pages/sponsor/descriptions/RunEndEncodedInArrowCpp.md b/src/pages/sponsor/descriptions/RunEndEncodedInArrowCpp.md
new file mode 100644
index 000000000..75b0eded0
--- /dev/null
+++ b/src/pages/sponsor/descriptions/RunEndEncodedInArrowCpp.md
@@ -0,0 +1,50 @@
+#### Overview
+
+Apache Arrow is the universal columnar format and multi-language toolbox for fast data interchange and in-memory analytics.
+
+Run-End-Encoding is a composite Arrow datatype that efficiently represents data with many repeated values, such as timeseries.
+While basic support is present, Run-End-Encoding is not universally supported in all Arrow C++ components.
+
+We propose to finish implementing support for Run-End-Encoding in all components of Arrow C++:
+
+* cast kernels (including implicit run-end-encoding or decoding where applicable)
+
+* scalar kernels:
+ - all unary kernels (math, etc.)
+ - all binary kernels (arithmetic, comparisons, etc.)
+ - `coalesce`, `if_else`, `case_when`
+ - fix incorrect output in `is_null` and `true_unless_null`
+
+* vector kernels:
+ - cumulative aggregations (`cumulative_max`, `cumulative_sum`, etc.)
+ - `pairwise_diff`
+ - `filter`, `take`, `scatter`
+ - `fill_null_forward`, `fill_null_backward`
+ - `replace_with_mask`
+ - `indices_non_zero`
+ - `sort_indices`, `rank`, `rank_normal`, `rank_quantile`
+ - `partition_nth_indices`
+ - `select_k_unstable`
+ - `unique`, `value_counts`
+ - `winsorize`
+ - fix incorrect output in `drop_null`
+
+* aggregate kernels:
+ - `all`, `any`
+ - `count_distinct`
+ - `approximate_median`
+ - `sum`, `product`, `mean`, `mode`, `quantile`, `tdigest`
+ - `variance`, `stddev`, `skew`, `kurtosis`
+ - `first`, `last`, `min`, `max`
+ - `index`
+ - fix incorrect output in `count`
+
+* Parquet reader and writer
+
+* CSV reader
+
+* ORC reader and writer
+
+Funders can decide to fund the entire package, or choose the components they are interested in.
+
+##### Are you interested in this project? Either entirely or partially, contact us for more information on how to help us fund it.
diff --git a/src/pages/sponsor/descriptions/SVE2SupportInXsimd.md b/src/pages/sponsor/descriptions/SVE2SupportInXsimd.md
new file mode 100644
index 000000000..74e40229b
--- /dev/null
+++ b/src/pages/sponsor/descriptions/SVE2SupportInXsimd.md
@@ -0,0 +1,12 @@
+#### Overview
+xsimd is a C++ header-only library that abstracts SIMD (vectorization) intrinsics behind a single, generic API. The same code - `xsimd::batch` - compiles to optimal machine code on x86 SSE/AVX, ARM NEON, RISC-V, and WebAssembly, with no runtime overhead. When an intrinsic is missing on a given target, xsimd falls back gracefully rather than failing or leaving the developer to write platform-specific branches. This is why projects like Mozilla Firefox, Apache Arrow, Meta Velox, KDE Krita, and Pythran have adopted it as their vectorization layer.
+
+Writing SIMD intrinsics by hand is notoriously painful. Each architecture exposes different types, different naming conventions, and different gotchas - alignment rules, predicate registers, lane-width surprises, compiler bugs. Targeting two architectures means two separate, opaque, hard-to-test code paths. xsimd eliminates that cost entirely.
+
+ARM is now a first-class server architecture. AWS Graviton4 - broadly deployed today across EC2 instance families - ships with SVE2, ARM's latest vector ISA. Google and Microsoft have both announced their own ARM-based server chips (Axion and Cobalt 200 respectively), signalling an industry-wide shift. SVE2 brings a materially richer instruction set than NEON, and xsimd currently cannot exploit it - falling back to SVE and NEON on hardware that is capable of significantly more.
+
+We propose to implement a complete xsimd::sve2 backend - all arithmetic, mathematical, and reduction operations . The work will be fully tested, documented, and merged upstream into the public repository under the existing BSD 3-Clause license.
+
+Funding this development will directly enhance the cutting-edge data processing workflow using Arrow and Velox, paving the way for the future of ARM computing!
+
+##### Are you interested in this project? Either entirely or partially, contact us for more information on how to help us fund it.
\ No newline at end of file
diff --git a/src/pages/sponsor/index.tsx b/src/pages/sponsor/index.tsx
new file mode 100644
index 000000000..2d765396f
--- /dev/null
+++ b/src/pages/sponsor/index.tsx
@@ -0,0 +1,14 @@
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import Layout from '@theme/Layout';
+import { FundableContent as FundableProjects } from '@site/src/pages/sponsor';
+import Footer from '@site/src/components/footer/Footer';
+
+export default function FundablePage(): JSX.Element {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/theme/Root.tsx b/src/theme/Root.tsx
new file mode 100644
index 000000000..f82e9e610
--- /dev/null
+++ b/src/theme/Root.tsx
@@ -0,0 +1,5 @@
+import React from "react";
+
+export default function Root({ children }: { children: React.ReactNode }) {
+ return <>{children}>;
+}
diff --git a/static/atom.xml b/static/atom.xml
new file mode 100644
index 000000000..81484db61
--- /dev/null
+++ b/static/atom.xml
@@ -0,0 +1,214 @@
+
+
+ https://quantstack.net/
+ Recent blog posts featured by QuantStack team
+ 2026-07-10T11:54:34.497Z
+ https://github.com/jpmonette/feed
+
+ QuantStack Team
+ https://quantstack.net
+
+
+
+ Atom feed for QuantStack website blog page
+
+
+ https://blog.jupyter.org/jupyterlite-0-8-is-released-0c89c4200f79
+
+ 2026-07-10T00:00:00.000Z
+ The new 0.8 release includes a number of new features, bug fixes, and enhancements. Highlights include a shareable REPL, a refreshed loading screen, file system reliability improvements, a terminal in the browser, and an update to JupyterLab 4.6 and Notebook 7.6.
]]>
+
+ Jeremy Tuloup
+
+
+
+
+ https://blog.jupyter.org/congratulations-distinguished-contributors-1998f468b29e
+
+ 2026-06-24T00:00:00.000Z
+ We are proud to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2025 cohort of contributors.
]]>
+
+ Johan Mabille
+
+
+
+
+ https://medium.com/@AntoineProuvost/improving-simd-in-apache-arrow-80-faster-parquet-column-reads-on-arm-42150ac4ec21
+
+ 2026-06-11T00:00:00.000Z
+ We accelerated Parquet column reads on ARM by up to 80% in Apache Arrow C++, by adding support for the Scalable Vector Extension (SVE) and fixing a compiler optimization issue worth a 5x speedup on a dedicated routine.
]]>
+
+ Antoine Prouvost
+
+
+
+
+ https://notebook.link/@DerThorsten/async-xeus-python
+
+ 2026-06-10T00:00:00.000Z
+ We added top-level await support to xeus-python 🚀. You can now use toplevel async code directly in notebooks without extra boilerplate and without blocking the kernel.
]]>
+
+ Thorsten Beier
+
+
+
+
+ https://medium.com/@julien.jerphanion/sharded-repodata-support-in-mamba-ae6147d1d608
+
+ 2026-04-29T00:00:00.000Z
+ We are thrilled to introduce Mamba 2.6, the first release of the package manager with support for sharded repodata, improving perfomance by a large factor, both in execution time and memory consumption.
]]>
+
+ Julien Jerphanion
+
+
+
+
+ https://medium.com/@QuantStack/introducing-sparrow-ipc-modern-c-20-arrow-ipc-e1690ae82b81
+
+ 2026-04-04T00:00:00.000Z
+ If you work in the world of data engineering, you are probably familiar with Apache Arrow — the universal columnar format and multi-language toolbox that has become the gold standard for fast in-memory analytics and data interchange.
]]>
+
+ Hind Montassif, Alexis Placet, Johan Mabille
+
+
+
+
+ https://prefix.dev/blog/serverless-scientific-computing-how-notebook-link-scales-without-backends
+
+ 2026-03-27T00:00:00.000Z
+ Notebook.link combines WebAssembly and the conda ecosystem to deliver scalable, serverless computing environments that run entirely in the browser.
]]>
+
+ Sylvain Corlay
+
+
+
+
+ https://medium.com/@AntoineProuvost/faster-reads-for-apache-parquet-improving-integer-unpacking-f6e21ce49a85
+
+ 2026-03-16T00:00:00.000Z
+ By rewriting the SIMD optimizations of a critical low-level algorithm in Arrow C++, we have been able to deliver substantial speedups when reading Parquet data, up to 60% on some Arrow benchmarks with specific column encodings.
]]>
+
+ Antoine Prouvost
+
+
+
+
+ https://blog.jupyter.org/expanding-geospatial-workflows-in-jupytergis-stac-browsing-and-story-maps-7fb98eece82e
+
+ 2026-02-19T00:00:00.000Z
+ We introduce two new JupyterGIS features: a STAC browser integrated directly into JupyterGIS, and a new Story Map feature, which makes it possible to combine maps and narrative content in a single, interactive view.
]]>
+
+ Gregory Mooney
+
+
+
+
+ https://blog.jupyter.org/jupyterlite-officially-joins-project-jupyter-77df24c8db80
+
+ 2026-02-12T00:00:00.000Z
+ We are thrilled to announce that JupyterLite is now an official part of Project Jupyter. This milestone marks a significant step forward for interactive computing in the browser and strengthens JupyterLite’s role within the Jupyter ecosystem.
]]>
+
+ Jérémy Tuloup, Sylvain Corlay, Fernando Pérez
+
+
+
+
+ https://blog.jupyter.org/instantly-view-parquet-files-in-jupyterlab-with-arbalister-4799c28bbce7
+
+ 2026-01-29T00:00:00.000Z
+ Arbalister is a JupyterLab extension that enables seamless viewing of many tabular file formats, including Parquet, CSV, Avro, ORC, and SQLite.
]]>
+
+ Antoine Prouvost
+
+
+
+
+ https://medium.com/@QuantStack/introducing-notebook-link-the-future-of-notebook-sharing-5de900a97b4a
+
+ 2026-01-22T00:00:00.000Z
+ We are excited to unveil notebook.link, a groundbreaking platform that simplifies sharing and running notebooks like never before.
]]>
+
+ QuantStack
+
+
+
+
+ https://blog.jupyter.org/jupyterlite-0-7-is-released-67db4d1609ad
+
+ 2025-12-04T00:00:00.000Z
+ The new 0.7 release includes a number of new features, bug fixes, and enhancements. This release also brings significant improvements to the user experience and new customization options for JupyterLite deployments.
]]>
+
+ Jeremy Tuloup
+
+
+
+
+ https://thenewstack.io/teaching-a-billion-people-to-code-how-jupyterlite-is-scaling-the-impossible/
+
+ 2025-12-01T00:00:00.000Z
+ QuantStack, an “almost accidental startup,” is building a serverless distro of JupyterLab for Jupyter’s global adoption.
]]>
+
+ Michelle Gienow
+
+
+
+
+ https://blog.jupyter.org/jupyterlab-4-5-and-notebook-7-5-are-available-1bcd1fa19a47
+
+ 2025-11-24T00:00:00.000Z
+ JupyterLab 4.5 has been released! This new minor release of JupyterLab includes 51 new features and enhancements, 81 bug fixes, 44 maintenance tasks and 38 documentation improvements.
]]>
+
+ Jeremy Tuloup
+
+
+
+
+ https://blog.jupyter.org/gnu-octave-meets-jupyterlite-compute-anywhere-anytime-8b033afbbcdc
+
+ 2025-10-16T00:00:00.000Z
+ We are thrilled to announce the newest member of our JupyterLite kernel ecosystem: Xeus-Octave. Xeus-Octave allows you to run GNU Octave code directly on your browser.
]]>
+
+ Isabel Paredes
+
+
+
+
+ https://eo4society.esa.int/2025/10/16/jupytergis-breaks-through-to-the-next-level/
+
+ 2025-10-16T00:00:00.000Z
+ Launched in June 2024, JupyterGIS was introduced as a collaborative, web-based GIS environment built on the JupyterLab framework. Its objective is to bring QGIS-inspired workflows into the browser…
]]>
+
+ Martin Renou, Arjun Verma, Gregory Mooney, Sylvain Corlay
+
+
+
+
+ https://medium.com/@QuantStack/sovereign-tech-agency-invests-in-apache-arrows-future-with-quantstack-d2f84c21c2cc
+
+ 2025-10-07T00:00:00.000Z
+ We are thrilled to announce that the Sovereign Tech Fund is providing critical funding to sustain and improve Apache Arrow, an essential open-source project in the modern data ecosystem.
]]>
+
+ Antoine Pitrou, Raúl Cumplido
+
+
+
+
+ https://www.open-source-ward.com/from-linux-parties-to-global-impact-an-interview-with-sylvain-corlay-founder-of-quantstack/
+
+ 2025-09-18T00:00:00.000Z
+ In today’s article, we had the chance to speak with Sylvain Corlay, long-time contributor of the Jupyter project, used by millions of people worldwide, and CEO-founder of QuantStack, an open-source development company employing around thirty people.
]]>
+
+ Sylvain Corlay, Arthur Vervaet
+
+
+
+
+ https://medium.com/@QuantStack/a-year-in-review-quantstacks-contributions-to-apache-arrow-7eba38acbcf2
+
+ 2025-09-02T00:00:00.000Z
+ Since November 2024, QuantStack has been involved in the maintenance and development of Apache Arrow. We have a team of several engineers working…
]]>
+
+ Antoine Pitrou, Raúl Cumplido
+
+
+
\ No newline at end of file
diff --git a/static/atom_all.xml b/static/atom_all.xml
new file mode 100644
index 000000000..d6fa50c84
--- /dev/null
+++ b/static/atom_all.xml
@@ -0,0 +1,1568 @@
+
+
+
+ All blog posts featured by QuantStack team
+ 2026-07-10T11:54:34.500Z
+ https://github.com/jpmonette/feed
+ Atom feed for QuantStack website blog page
+
+
+ https://blog.jupyter.org/jupyterlite-0-8-is-released-0c89c4200f79
+
+ 2026-07-10T00:00:00.000Z
+ The new 0.8 release includes a number of new features, bug fixes, and enhancements. Highlights include a shareable REPL, a refreshed loading screen, file system reliability improvements, a terminal in the browser, and an update to JupyterLab 4.6 and Notebook 7.6.
]]>
+
+ Jeremy Tuloup
+
+
+
+
+ https://blog.jupyter.org/congratulations-distinguished-contributors-1998f468b29e
+
+ 2026-06-24T00:00:00.000Z
+ We are proud to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2025 cohort of contributors.
]]>
+
+ Johan Mabille
+
+
+
+
+ https://medium.com/@AntoineProuvost/improving-simd-in-apache-arrow-80-faster-parquet-column-reads-on-arm-42150ac4ec21
+
+ 2026-06-11T00:00:00.000Z
+ We accelerated Parquet column reads on ARM by up to 80% in Apache Arrow C++, by adding support for the Scalable Vector Extension (SVE) and fixing a compiler optimization issue worth a 5x speedup on a dedicated routine.
]]>
+
+ Antoine Prouvost
+
+
+
+
+ https://notebook.link/@DerThorsten/async-xeus-python
+
+ 2026-06-10T00:00:00.000Z
+ We added top-level await support to xeus-python 🚀. You can now use toplevel async code directly in notebooks without extra boilerplate and without blocking the kernel.
]]>
+
+ Thorsten Beier
+
+
+
+
+ https://medium.com/@julien.jerphanion/sharded-repodata-support-in-mamba-ae6147d1d608
+
+ 2026-04-29T00:00:00.000Z
+ We are thrilled to introduce Mamba 2.6, the first release of the package manager with support for sharded repodata, improving perfomance by a large factor, both in execution time and memory consumption.
]]>
+
+ Julien Jerphanion
+
+
+
+
+ https://medium.com/@QuantStack/introducing-sparrow-ipc-modern-c-20-arrow-ipc-e1690ae82b81
+
+ 2026-04-04T00:00:00.000Z
+ If you work in the world of data engineering, you are probably familiar with Apache Arrow — the universal columnar format and multi-language toolbox that has become the gold standard for fast in-memory analytics and data interchange.
]]>
+
+ Hind Montassif, Alexis Placet, Johan Mabille
+
+
+
+
+ https://prefix.dev/blog/serverless-scientific-computing-how-notebook-link-scales-without-backends
+
+ 2026-03-27T00:00:00.000Z
+ Notebook.link combines WebAssembly and the conda ecosystem to deliver scalable, serverless computing environments that run entirely in the browser.
]]>
+
+ Sylvain Corlay
+
+
+
+
+ https://medium.com/@AntoineProuvost/faster-reads-for-apache-parquet-improving-integer-unpacking-f6e21ce49a85
+
+ 2026-03-16T00:00:00.000Z
+ By rewriting the SIMD optimizations of a critical low-level algorithm in Arrow C++, we have been able to deliver substantial speedups when reading Parquet data, up to 60% on some Arrow benchmarks with specific column encodings.
]]>
+
+ Antoine Prouvost
+
+
+
+
+ https://blog.jupyter.org/expanding-geospatial-workflows-in-jupytergis-stac-browsing-and-story-maps-7fb98eece82e
+
+ 2026-02-19T00:00:00.000Z
+ We introduce two new JupyterGIS features: a STAC browser integrated directly into JupyterGIS, and a new Story Map feature, which makes it possible to combine maps and narrative content in a single, interactive view.
]]>
+
+ Gregory Mooney
+
+
+
+
+ https://blog.jupyter.org/jupyterlite-officially-joins-project-jupyter-77df24c8db80
+
+ 2026-02-12T00:00:00.000Z
+ We are thrilled to announce that JupyterLite is now an official part of Project Jupyter. This milestone marks a significant step forward for interactive computing in the browser and strengthens JupyterLite’s role within the Jupyter ecosystem.
]]>
+
+ Jérémy Tuloup, Sylvain Corlay, Fernando Pérez
+
+
+
+
+ https://blog.jupyter.org/instantly-view-parquet-files-in-jupyterlab-with-arbalister-4799c28bbce7
+
+ 2026-01-29T00:00:00.000Z
+ Arbalister is a JupyterLab extension that enables seamless viewing of many tabular file formats, including Parquet, CSV, Avro, ORC, and SQLite.
]]>
+
+ Antoine Prouvost
+
+
+
+
+ https://medium.com/@QuantStack/introducing-notebook-link-the-future-of-notebook-sharing-5de900a97b4a
+
+ 2026-01-22T00:00:00.000Z
+ We are excited to unveil notebook.link, a groundbreaking platform that simplifies sharing and running notebooks like never before.
]]>
+
+ QuantStack
+
+
+
+
+ https://blog.jupyter.org/jupyterlite-0-7-is-released-67db4d1609ad
+
+ 2025-12-04T00:00:00.000Z
+ The new 0.7 release includes a number of new features, bug fixes, and enhancements. This release also brings significant improvements to the user experience and new customization options for JupyterLite deployments.
]]>
+
+ Jeremy Tuloup
+
+
+
+
+ https://thenewstack.io/teaching-a-billion-people-to-code-how-jupyterlite-is-scaling-the-impossible/
+
+ 2025-12-01T00:00:00.000Z
+ QuantStack, an “almost accidental startup,” is building a serverless distro of JupyterLab for Jupyter’s global adoption.
]]>
+
+ Michelle Gienow
+
+
+
+
+ https://blog.jupyter.org/jupyterlab-4-5-and-notebook-7-5-are-available-1bcd1fa19a47
+
+ 2025-11-24T00:00:00.000Z
+ JupyterLab 4.5 has been released! This new minor release of JupyterLab includes 51 new features and enhancements, 81 bug fixes, 44 maintenance tasks and 38 documentation improvements.
]]>
+
+ Jeremy Tuloup
+
+
+
+
+ https://blog.jupyter.org/gnu-octave-meets-jupyterlite-compute-anywhere-anytime-8b033afbbcdc
+
+ 2025-10-16T00:00:00.000Z
+ We are thrilled to announce the newest member of our JupyterLite kernel ecosystem: Xeus-Octave. Xeus-Octave allows you to run GNU Octave code directly on your browser.
]]>
+
+ Isabel Paredes
+
+
+
+
+ https://eo4society.esa.int/2025/10/16/jupytergis-breaks-through-to-the-next-level/
+
+ 2025-10-16T00:00:00.000Z
+ Launched in June 2024, JupyterGIS was introduced as a collaborative, web-based GIS environment built on the JupyterLab framework. Its objective is to bring QGIS-inspired workflows into the browser…
]]>
+
+ Martin Renou, Arjun Verma, Gregory Mooney, Sylvain Corlay
+
+
+
+
+ https://medium.com/@QuantStack/sovereign-tech-agency-invests-in-apache-arrows-future-with-quantstack-d2f84c21c2cc
+
+ 2025-10-07T00:00:00.000Z
+ We are thrilled to announce that the Sovereign Tech Fund is providing critical funding to sustain and improve Apache Arrow, an essential open-source project in the modern data ecosystem.
]]>
+
+ Antoine Pitrou, Raúl Cumplido
+
+
+
+
+ https://www.open-source-ward.com/from-linux-parties-to-global-impact-an-interview-with-sylvain-corlay-founder-of-quantstack/
+
+ 2025-09-18T00:00:00.000Z
+ In today’s article, we had the chance to speak with Sylvain Corlay, long-time contributor of the Jupyter project, used by millions of people worldwide, and CEO-founder of QuantStack, an open-source development company employing around thirty people.
]]>
+
+ Sylvain Corlay, Arthur Vervaet
+
+
+
+
+ https://medium.com/@QuantStack/a-year-in-review-quantstacks-contributions-to-apache-arrow-7eba38acbcf2
+
+ 2025-09-02T00:00:00.000Z
+ Since November 2024, QuantStack has been involved in the maintenance and development of Apache Arrow. We have a team of several engineers working…
]]>
+
+ Antoine Pitrou, Raúl Cumplido
+
+
+
+
+ https://david-brochart.medium.com/create-your-own-layers-in-jupytergis-cbb995a89b16
+
+ 2025-06-25T00:00:00.000Z
+ JupyterGIS-tiler is a JupyterGIS extension that lets you use a notebook to process your (Xarray) data and make it available as raster tiles, so that it can be visualized in JupyterGIS.
]]>
+
+ David Brochart
+
+
+
+
+ https://blog.jupyter.org/c-in-jupyter-interpreting-c-in-the-web-c9d93542f20b
+
+ 2025-06-19T00:00:00.000Z
+ Scientists and engineers utilize programming languages not only to build software systems but also to drive interactive exploratory workflows. They leverage developer tools to explore and reason through problems effectively.
]]>
+
+ Anutosh Bhat, Vassil Vassilev
+
+
+
+
+ https://blog.jupyter.org/jupyterlite-0-6-0-is-released-b4bc69bfc8f4
+
+ 2025-06-12T00:00:00.000Z
+ The new 0.6.0 release includes a number of new features, bug fixes, and enhancements. This release also brings significant improvements to the user experience and new customization options for JupyterLite deployments.
]]>
+
+ Jeremy Tuloup
+
+
+
+
+ https://blog.jupyter.org/jupyterlab-4-4-and-notebook-7-4-are-available-aca2782d4f3d
+
+ 2025-05-21T00:00:00.000Z
+ JupyterLab 4.4 has been released! This new minor release of JupyterLab includes 28 new features and enhancements, 76 bug fixes, 63 maintenance tasks and 34 documentation improvements.
]]>
+
+ Jeremy Tuloup
+
+
+
+
+ https://blog.jupyter.org/congratulations-distinguished-contributors-2504029fc5a9
+
+ 2025-05-15T00:00:00.000Z
+ We are proud to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2024 cohort of contributors.
]]>
+
+ Johan Mabille
+
+
+
+
+ https://david-brochart.medium.com/making-qt-collaborative-using-crdts-94c470703253
+
+ 2025-03-31T00:00:00.000Z
+ A journal on creating a collaborative application with Qt
]]>
+
+ David Brochart
+
+
+
+
+ https://blog.jupyter.org/r-in-the-browser-announcing-our-webassembly-distribution-9450e9539ed5
+
+ 2025-02-28T00:00:00.000Z
+ R is now available in emscripten-forge, enabling the Xeus-R kernel in JupyterLite.
]]>
+
+ Isabel Paredes
+
+
+
+
+ https://blog.jupyter.org/real-time-collaboration-and-collaborative-editing-for-gis-workflows-with-jupyter-and-qgis-d25dbe2832a6
+
+ 2025-02-26T00:00:00.000Z
+ We are excited to announce JupyterGIS, a web-based, collaborative, and extensible interface for GIS, leveraging the JupyterLab application framework and integrating seamlessly with the Jupyter notebook interface.
]]>
+
+ Meriem Ben Ismail, Nicolas Brichet, David Brochart, Matt Fisher, Anne Fouilloux, Greg Mooney, Martin Renou, Arjun Verma
+
+
+
+
+ https://medium.com/@PyDataParis/pydata-paris-2025-50ff2bf2dc39
+
+ 2025-02-19T00:00:00.000Z
+ We are thrilled to announce the keynote speakers for the upcoming PyData Paris 2025, the leading gathering of the open-source data science and AI/ML community in France.
]]>
+
+ Sandrine Pataut
+
+
+
+
+ https://blog.jupyter.org/announcing-jupytercad-3-0-d8f4b7b0a719
+
+ 2025-02-17T00:00:00.000Z
+ We are thrilled to introduce JupyterCAD 3.0, the newest version of the collaborative CAD modeler designed for JupyterLab.
]]>
+
+ Arjun Verma, Trung Le, Martin Renou
+
+
+
+
+ https://johan-mabille.medium.com/sparrow-1f23817f6696
+
+ 2025-01-31T00:00:00.000Z
+ We are thrilled to introduce Sparrow, a new library designed to simplify the integration of Apache Arrow’s columnar format into C++ applications.
]]>
+
+ Johan Mabille, Alexis Placet, Thorsten Beier, Joël Lamotte
+
+
+
+
+ https://blog.jupyter.org/jupyterlite-terminal-edb3f80dc1c0
+
+ 2024-11-13T00:00:00.000Z
+ QuantStack are delighted to announce that we have been working on a new Terminal for JupyterLite.
]]>
+
+ Ian Thomas
+
+
+
+
+ https://blog.jupyter.org/automate-your-releases-with-the-jupyter-releaser-701e7b9841e6
+
+ 2024-10-28T00:00:00.000Z
+ Jupyter Releaser is an automation tool developed by the Jupyter team to streamline and standardize the release process across Jupyter projects.
]]>
+
+ Jeremy Tuloup
+
+
+
+
+ https://medium.com/@QuantStack/quantstack-steps-up-to-support-apache-arrow-with-new-dedicated-team-9ddc952f20e2
+
+ 2024-10-22T00:00:00.000Z
+ We are thrilled to announce that QuantStack is starting a new team dedicated to the maintenance and development of Apache Arrow.
]]>
+
+ Sylvain Corlay
+
+
+
+
+ https://blog.jupyter.org/interactive-mapping-with-ipyopenlayers-2b8bc93bb6c4
+
+ 2024-09-06T00:00:00.000Z
+ In this article, we present the main features of ipyopenlayers and demonstrate how this library can transform your geospatial data into dynamic, interactive visualizations.
]]>
+
+ Nour Cheour
+
+
+
+
+ https://blog.jupyter.org/announcing-the-2023-jupyter-distinguished-contributor-award-recipients-1b2cc4ba203f
+
+ 2024-09-04T00:00:00.000Z
+ We are delighted to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2023 cohort.
]]>
+
+ Johan Mabille, on behalf of the Jupyter Distinguished Contributors
+
+
+
+
+ https://blog.jupyter.org/ipydatagrid-is-now-part-of-project-jupyter-3b3dfb877664
+
+ 2024-08-22T00:00:00.000Z
+ Today, we are proud to announce that the ipydatagrid open source project has been incorporated into Project Jupyter as part of the Jupyter Widgets subproject.
]]>
+
+ Sylvain Corlay, on behalf of the Jupyter Widgets Council
+
+
+
+
+ https://medium.com/@QuantStack/introducing-mamba-2-0-0e8d5c6d1d0c
+
+ 2024-07-16T00:00:00.000Z
+ We are excited to present the first release candidate of Mamba 2.0, a significant upgrade to the mamba package manager. This update brings considerable enhancements for both users and developers, following an extensive year-long development effort.
]]>
+
+ Antoine Prouvost, Joël Lamotte, Johan Mabille, Hind Montassif
+
+
+
+
+ https://medium.com/@QuantStack/quantstack-open-source-internship-program-049755b6d44b
+
+ 2024-07-09T00:00:00.000Z
+ Today, we are announcing a new internship program that aims to empower a new cohort of open-source contributors and future maintainers to make an impact within our ecosystem.
]]>
+
+ Sylvain Corlay
+
+
+
+
+ https://medium.com/@QuantStack/jupytercad-2-0-4b9c4e18d22a
+
+ 2024-07-05T00:00:00.000Z
+ We are thrilled to introduce JupyterCAD 2.0, the newest version of the JupyterLab-based CAD modeler.
]]>
+
+ Trung Le, Martin Renou
+
+
+
+
+ https://blog.jupyter.org/jupytergis-d63b7adf9d0c
+
+ 2024-06-12T00:00:00.000Z
+ We are thrilled to announce that the European Space Agency (ESA) is funding our proposal “Real-time collaboration and collaborative editing for GIS workflows with Jupyter and QGIS.”
]]>
+
+ Sylvain Corlay, Anne Fouilloux, Monika Weissschnur
+
+
+
+
+ https://medium.com/@SylvainCorlay/commit-cdf57415b94b
+
+ 2024-05-29T00:00:00.000Z
+ Open-source projects are not just about the latest exciting updates and features, but also the principles and people that drive these projects to success. In this blog post, I reflect on the dynamics…
]]>
+
+ Sylvain Corlay
+
+
+
+
+ /blogs/Fanny
+
+ 2024-05-16T00:00:00.000Z
+ It is with great sadness that we announce the passing of our colleague and friend, Fanny Loustau Chartez, who served as the Chief Financial Officer of QuantStack since 2021.
]]>
+
+ Sylvain Corlay
+
+
+
+
+ https://medium.com/@PyDataParis/announcing-pydata-paris-2024-700220accc72
+
+ 2024-03-11T00:00:00.000Z
+ We are thrilled to announce the upcoming PyData Paris 2024, the gathering of the open-source data science and AI/ML community in France. PyData Paris will take place at the Cité des Sciences from September 25 to September 26, 2024.
]]>
+
+ Sylvain Corlay
+
+
+
+
+ https://blog.jupyter.org/meet-xeus-r-a-future-proof-jupyter-kernel-for-r-1adc5fdd09ab
+
+ 2024-01-22T00:00:00.000Z
+ Today, we, a collaborative team led by Romain François and supported by QuantStack, are thrilled to announce the initial release of Xeus-R, a future-proof Jupyter kernel for R.
]]>
+
+ Romain François
+
+
+
+
+ https://medium.com/@QuantStack/quantstack-2023-in-review-94fea0a35520
+
+ 2024-01-03T00:00:00.000Z
+ Since QuantStack was founded in 2016, we have remained committed to releasing our work under permissive open-source licenses. Here are some highlights of the 2023 achievements. Buckle up!
]]>
+
+ Sylvain Corlay
+
+
+
+
+ https://blog.jupyter.org/recent-keyboard-navigation-improvements-in-jupyter-4df32f97628d
+
+ 2023-12-16T00:00:00.000Z
+ Upcoming versions of JupyterLab (4.1.0) and Notebook (7.1.0) will include major keyboard accessibility fixes.
]]>
+
+ Nicolas Brichet, Gabriel Fouasnon
+
+
+
+
+ https://blog.jupyter.org/and-voici-e02367197ba2
+
+ 2023-12-06T00:00:00.000Z
+ Voici (meaning “here is” in French) is a novel project reshaping Jupyter-based interactive dashboards by combining Voilà and JupyterLite features. It facilitates the creation of dynamic, in-browser environments for data visualization and exploration.
]]>
+
+ Trung Duc Le, Martin Renou
+
+
+
+
+ https://blog.jupyter.org/plug-your-application-into-the-jupyter-world-805e48918801
+
+ 2023-10-23T00:00:00.000Z
+ Kernels are a simple but powerful abstraction in the Jupyter architecture. They encapsulate language interpreters and make them accessible through a standardized interface. This is the key to…
]]>
+
+ David Brochart
+
+
+
+
+ https://blog.jupyter.org/voil%C3%A0-0-5-0-homecoming-66f2465aa86f
+
+ 2023-09-25T00:00:00.000Z
+ Following the launch of Jupyter Notebook 7, it is now Voilà’s turn to join the JupyterLab family. In Version 0.5.0, the front-end of Voilà has been rebuilt from scratch using JupyterLab 4.0 components, just like in the case of Notebook 7.
]]>
+
+ Jeremy Tuloup, Martin Renou, Trung Duc Le
+
+
+
+
+ https://blog.jupyter.org/announcing-jupyter-notebook-7-8d6d66126dcf
+
+ 2023-07-26T00:00:00.000Z
+ Jupyter Notebook 7 is the most significant release of the Jupyter Notebook in years. Some highlights of this release include real-time collaboration, interactive debugging, table of contents, theming and dark mode, internationalization, improved accessibility, compact view on mobile devices.
]]>
+
+ Jeremy Tuloup
+
+
+
+
+ https://blog.jupyter.org/jupytercon-2023-recordings-now-live-on-youtube-17564b75a2a
+
+ 2023-07-22T00:00:00.000Z
+ Get ready to relive the magic of JupyterCon 2023, because the long-awaited moment is finally here! The JupyterCon YouTube channel has just dropped a treasure trove of content — all the talk and keynote recordings from the most epic conference of the year.
]]>
+
+ Gayle Ollington, Sylvain Corlay
+
+
+
+
+ https://blog.jupyter.org/a-theme-editor-for-jupyterlab-8f08ab62894d
+
+ 2023-06-19T00:00:00.000Z
+ To lower the bar for customizing JupyterLab we created a new tool providing a simple interface for tuning the JupyterLab appearance interactively.
]]>
+
+ Florence Haudin
+
+
+
+
+ https://blog.jupyter.org/collaborative-cad-in-jupyterlab-8eb9e8f81f0
+
+ 2023-06-02T00:00:00.000Z
+ Introducing JupyterCAD, a tool that integrates Computer-Aided Design (CAD) capabilities into JupyterLab.
]]>
+
+ Duc Trung Le, Martin Renou
+
+
+
+
+ https://blog.jupyter.org/congratulations-distinguished-contributors-7a7b215b8bd0
+
+ 2023-06-02T00:00:00.000Z
+ We are proud to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2022 cohort of contributors.
]]>
+
+ Johan Mabille
+
+
+
+
+ https://blog.jupyter.org/embed-interactive-itkwidgets-3d-renderings-into-jupyterlite-deployments-10eb9ea30980
+
+ 2023-03-15T00:00:00.000Z
+ A tutorial that demonstrates a zero-server, interactive 3D rendering notebook and walks through the quick and easy configuration that can be customized to your needs.
]]>
+
+ Matt McCormick, Brianna Major, Jeremy Tuloup, Wei Ouyang, Stephen Aylward
+
+
+
+
+ https://blog.jupyter.org/improving-the-accessibility-of-jupyter-6c695db518d3
+
+ 2023-02-24T00:00:00.000Z
+ This article presents some of the recent accessibility improvements in the Jupyter Notebook codebase.
]]>
+
+ Nicolas Brichet, Johan Mabille, Jeremy Tuloup, Frédéric Collonval, Sylvain Corlay
+
+
+
+
+ https://blog.jupyter.org/a-jupyter-kernel-for-gnu-octave-b6d29e56341f
+
+ 2023-01-11T00:00:00.000Z
+ We are happy to announce the xeus-octave project, a Jupyter kernel for GNU Octave. Xeus-octave was created by Giulio Girardi, recently joined by Antoine Prouvost - and has been incorporated into the Project Jupyter governance.
]]>
+
+ Giulio Girardi, Antoine Prouvost
+
+
+
+
+ https://medium.com/@QuantStack/quantstack-2022-in-review-7d4704b1db42
+
+ 2022-12-26T00:00:00.000Z
+ 2022 was an amazing year of innovation for the open-source developers at QuantStack. Developments range from major improvements to the Jupyter project to the packaging ecosystem and high-performance computing.
]]>
+
+ Sylvain Corlay
+
+
+
+
+ https://medium.com/@AntoineProuvost/managing-conflicts-with-mamba-6a5fa10ed6a
+
+ 2022-11-29T00:00:00.000Z
+ A key aspect of package management is finding a set of compatible versions of the required packages. Indeed, even in the case when few packages are explicitly required, second-order dependencies may…
]]>
+
+ Antoine Prouvost
+
+
+
+
+ https://blog.jupyter.org/jupytercon-is-back-in-2023-90e5c25eeec9
+
+ 2022-10-17T00:00:00.000Z
+ JupyterCon 2023 will be held May 10–12 (Thursday to Friday) in the city of light, Paris, France at the largest science museum in Europe, the Cité des Sciences et de l’Industrie.
]]>
+
+ Gayle Ollington
+
+
+
+
+ https://blog.jupyter.org/accelerating-jupyterlab-68942bb8d602
+
+ 2022-09-15T00:00:00.000Z
+ The next major release of JupyterLab will be significantly faster than previous versions. This was achieved both through systematic tracking of performance bugs and through significant upgrades to the Jupyter communication protocol and rendering mechanism for documents.
]]>
+
+ Frédéric Collonval, Johan Mabille, David Brochart, Afshin Darian
+
+
+
+
+ https://blog.jupyter.org/upgrading-nbgrader-99c56ae56c47
+
+ 2022-09-15T00:00:00.000Z
+ Project Jupyter provides a broad collection of open-source tools for interactive computing that has become ubiquitous in data science and scientific computing, and is very popular in educational…
]]>
+
+ Nicolas Brichet
+
+
+
+
+ https://blog.jupyter.org/visual-programming-in-jupyterlab-with-blockly-7731ec3e113c
+
+ 2022-07-29T00:00:00.000Z
+ When moving from block-based programming to a more classical language like Python, students often have to switch to a completely new environment. In order to provide a smooth ramp of complexity for learners, we designed a JupyterLab extension for Blockly so that Jupyter can be used from the very first steps of their learning journey.
]]>
+
+ Denisa Checiu, Carlos Herrero
+
+
+
+
+ https://blog.jupyter.org/mamba-meets-jupyterlite-88ef49ac4dc8
+
+ 2022-07-14T00:00:00.000Z
+ JupyterLite is a Jupyter distribution that runs entirely in the web browser without any server components. To achieve this, all language kernels must also run in the browser. A significant benefit of…
]]>
+
+ Thorsten Beier, Martin Renou
+
+
+
+
+ https://blog.jupyter.org/inspector-jupyterlab-404cce3e1df6
+
+ 2022-04-11T00:00:00.000Z
+ JupyterLab provides multiple ways to improve your coding workflow: code highlighting, code completion, theming, debugger with rich variable rendering and more.
]]>
+
+ Martin Renou
+
+
+
+ based renderer for Matplotlib in Pyodide]]>
+ https://blog.pyodide.org/posts/canvas-renderer-matplotlib-in-pyodide/
+
+ 2022-04-01T00:00:00.000Z
+ -based-renderer-for-Matplotlib-in-Pyodide.png" alt="Image for HTML5 based renderer for Matplotlib in Pyodide" style="max-width:100%; height:auto;" />In this post, we present a new backend for Matplotlib enabling the rendering of figures in the browser by leveraging the <canvas> element. This showcases how JavaScript and Python can interact with each other, thanks to Pyodide.
]]>
+
+ Madhur Tandon
+
+
+
+
+ https://wolfv.medium.com/the-future-of-mamba-fdf6d628b3df
+
+ 2022-03-01T00:00:00.000Z
+ The recent adoption of libmamba by the conda project was a great validation of our work. Several other game-changing innovations are in the works by the mamba team. Stay tuned!
]]>
+
+ Wolf Vollprecht
+
+
+
+
+ https://blog.jupyter.org/congratulations-distinguished-contributors-bc349fa60d68
+
+ 2022-03-16T00:00:00.000Z
+ We are proud to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2021 cohort of contributors.
]]>
+
+ Johan Mabille
+
+
+
+
+ https://blog.jupyter.org/jupyter-everywhere-f8151c2cc6e8
+
+ 2022-03-15T00:00:00.000Z
+ Easily embed a console, a notebook, or a fully-fledged IDE on any web page.
]]>
+
+ Martin Renou, Jeremy Tuloup
+
+
+
+
+ https://medium.com/@kmathewos92/ros2-support-for-zethus-e6ecfcdb1c4c
+
+ 2022-02-17T00:00:00.000Z
+ Zethus is an Open Source library for Robot visualization in the browser. Initially developed by Rapyuta Robotics, it provides a web-based…
]]>
+
+ Kedus Mathewos
+
+
+
+
+ https://medium.com/@QuantStack/quantstack-2021-in-review-fe5eac2e0f6d
+
+ 2021-12-18T00:00:00.000Z
+ This was a crazy year of innovation for the open-source team at QuantStack. From JupyterLab to the packaging ecosystem and high-performance computing, we made some major strides in all areas, while almost doubling the size of the team.
]]>
+
+ Sylvain Corlay
+
+
+
+
+ https://blog.jupyter.org/jupyter-games-cda20dc15a21
+
+ 2021-12-14T00:00:00.000Z
+ Making their own tiny video games can be a great way for kids to learn programming in a playful matter. While Jupyter is widely used as a scientific and educational tool, Jupyter is seldom used as a…
]]>
+
+ Thorsten Beier
+
+
+
+
+ https://blog.jupyter.org/need-for-speed-voil%C3%A0-edition-a9e1300ab3b2
+
+ 2021-12-10T00:00:00.000Z
+ Voilà turns Jupyter notebooks into standalone applications without requiring any modification to the content. You want to share your content with non-technical readers? Just call Voilà with the…
]]>
+
+ Duc Trung Le
+
+
+
+
+ https://adelsalle.medium.com/towards-a-more-secure-conda-ecosystem-5ce65a27d7d5
+
+ 2021-11-16T00:00:00.000Z
+ Supply chain security is crucial to the overall security of package managers, which are a major attack vector of information systems. Today, we are pleased to announce that mamba has gained the…
]]>
+
+ Adrien Delsalle
+
+
+
+
+ https://johan-mabille.medium.com/toward-a-faster-and-thinner-xsimd-9e4eef41bc17
+
+ 2021-10-29T00:00:00.000Z
+ xsimd, the SIMD library by QuantStack, got more and more adoption in recent years. While it helped improve the library, adoption also brought new requirements. Among them was the abitility to...
]]>
+
+ Serge Guelton, Johan Mabille
+
+
+
+
+ https://blog.jupyter.org/xeus-lite-379e96bb199d
+
+ 2021-10-25T00:00:00.000Z
+ JupyterLite is a JupyterLab distribution that runs entirely in the web browser, backed by in-browser language kernels. Xeus is C++ library for writing Jupyter kernels. In this blogpost we show how…
]]>
+
+ Thorsten Beier
+
+
+
+
+ https://wolfv.medium.com/the-mamba-project-and-the-czi-grant-ec88fb27c25
+
+ 2021-10-19T00:00:00.000Z
+ For those who don't know yet: mamba is a fast, cross-platform & non-language-specific package manager widely used in the scientific space. Mamba works with conda -packages and works great in tandem…
]]>
+
+ Wolf Vollprecht
+
+
+
+
+ https://blog.jupyter.org/looking-at-notebooks-from-a-new-perspective-bfd06797f188
+
+ 2021-10-05T00:00:00.000Z
+ Jupyter notebooks are a great tool for practitioners of scientific computing from the research phase of their work to the communication of their results. The interleaving of code and rich text makes…
]]>
+
+ Mariana Meireles
+
+
+
+
+ https://blog.jupyter.org/xeus-2-0-cb460d4daed4
+
+ 2021-09-28T00:00:00.000Z
+ We have just released Xeus 2.0. This is a major release of the library. While it includes backward-incompatible changes, they are very limited and upgrading your kernels should be relatively easy…
]]>
+
+ Johan Mabille, Sylvain Corlay
+
+
+
+
+ https://blog.jupyter.org/from-jupyter-to-the-moon-2e432df402c8
+
+ 2021-09-24T00:00:00.000Z
+ A key principle in Jupyter’s design is language agnosticism, and one of the main extension points of the Jupyter ecosystem is the kernel, the part of the architecture responsible for executing the…
]]>
+
+ Thorsten Beier
+
+
+
+
+ https://blog.jupyter.org/jupyterlite-jupyter-%EF%B8%8F-webassembly-%EF%B8%8F-python-f6e2e41ab3fa
+
+ 2021-07-13T00:00:00.000Z
+ JupyterLite is a JupyterLab distribution that runs entirely in the web browser, backed by in-browser language kernels. JupyterLite is a reboot of several attempts at making a full static Jupyter…
]]>
+
+ Jeremy Tuloup
+
+
+
+
+ https://wolfv.medium.com/mamba-0-15-0-475d1dca0418
+
+ 2021-07-09T00:00:00.000Z
+ We’ve just dropped one of the biggest releases of mamba (the fast conda package manager)— along with some nice improvements in libsolv! This is a quick update on some new and improved features in…
]]>
+
+ Wolf Vollprecht, Adrien Delsalle
+
+
+
+
+ https://www.polytechnique.edu/fondation/content/le-calcul-haute-performance-au-service-de-l%E2%80%99innovation
+
+ 2021-06-18T00:00:00.000Z
+ Led by Professor Marc Massot (Center for Applied Mathematics), the HPC@Maths initiative aims at developing a strong expertise in high-performance computing at École Polytechnique. This project is supported by the X Foundation, and by QuantStack.
]]>
+
+ Fondation École Polytechnique
+
+
+
+
+ https://blog.jupyter.org/how-we-made-jupyter-notebooks-collaborative-with-yjs-b8dff6a9d8af
+
+ 2021-06-12T00:00:00.000Z
+ Collaborative editing — à la Google Docs — is a feature that you still rarely find in applications. One of the few good things that came out of this pandemic is that more people seem to care about…
]]>
+
+ Kevin Jahns
+
+
+
+
+ https://blog.jupyter.org/retrolab-a-jupyterlab-distribution-with-a-retro-look-and-feel-8096b8b223d0
+
+ 2021-06-27T00:00:00.000Z
+ RetroLab is an alternative JupyterLab distribution, built from the ground-up, providing a notebook interface with a retro look and feel. Currently at version 3.0, JupyterLab provides an advanced…
]]>
+
+ Jeremy Tuloup
+
+
+
+
+ https://adelsalle.medium.com/rhumba-the-fast-r-distribution-is-available-on-windows-fa975b2aefa2
+
+ 2021-05-18T00:00:00.000Z
+ A few months ago, Mariana Meireles created Rhumba, a fast R package manager and distribution leveraging the conda-forge initiative and the mamba library. Today, we’re happy to announce a new major…
]]>
+
+ Adrien Delsalle
+
+
+
+
+ https://blog.jupyter.org/enabling-the-jupyterlab-debugger-with-ipykernel-8d7248f522b0
+
+ 2021-05-13T00:00:00.000Z
+ JupyterLab 3.0 includes a visual debugger that allows to interactively set breakpoints, step into functions, and inspect variables with any Jupyter kernel that implements the Jupyter debugger…
]]>
+
+ Sylvain Corlay, Johan Mabille
+
+
+
+
+ https://medium.com/@mari_meir/jupyter-%EF%B8%8F-%EF%B8%8F-cytoscape-e2e77be8e0f9
+
+ 2021-05-11T00:00:00.000Z
+ Cytoscape is an open source software platform for visualizing complex networks and integrating these with any type of attribute data. While the project was started in the life sciences community, it…
]]>
+
+ Mariana Meireles
+
+
+
+
+ https://johan-mabille.medium.com/zarray-a-dynamic-expression-system-based-on-xtensor-ded69f37ff5e
+
+ 2021-04-29T00:00:00.000Z
+ In this article we demonstrate how we pushed xtensor one step further, implementing a dynamic expression system on top of it. xtensor is a comprehensive C++framework for multi-dimensional array…
]]>
+
+ Johan Mabille
+
+
+
+
+ https://blog.jupyter.org/nbterm-jupyter-notebooks-in-the-terminal-6a2b55d08b70
+
+ 2021-04-26T00:00:00.000Z
+ Jupyter notebooks are mostly known for their web-based user interface, such as JupyterLab or the Classic Notebook. They offer a great user experience, allow for rich output rendering, provide…
]]>
+
+ David Brochart
+
+
+
+
+ https://blog.jupyter.org/abracadabra-bringing-the-magics-to-xeus-python-9d17bcfacb4
+
+ 2021-02-18T00:00:00.000Z
+ Last year, we set ourselves to implement a visual debugger for JupyterLab. This endeavor required major developments in the JupyterLab…
]]>
+
+ Martin Renou
+
+
+
+
+ https://medium.com/robostack/cross-platform-conda-packages-for-ros-fa1974fd1de3
+
+ 2021-02-16T00:00:00.000Z
+ 2020 has been a busy year for the RoboStack project. We collaboratively published ros-noetic on four platforms (Windows, macOS, Linux x64 and ARM64) and revamped how ROS packages can be released on…
]]>
+
+ Wolf Vollprecht, Tobias Fischer
+
+
+
+
+ https://blog.jupyter.org/genomic-data-representation-in-jupyter-c57a5bb518d6
+
+ 2021-02-08T00:00:00.000Z
+ If there is one thing that recent events tell us, it is that genomics is a large source of data, and that its manipulation and understanding allow for the quick development of new drugs and…
]]>
+
+ Jean-David Harrouet
+
+
+
+
+ https://blog.jupyter.org/an-sql-solution-for-jupyter-ef4a00a0d925?postPublishedType=initial
+
+ 2021-02-03T00:00:00.000Z
+ A few months ago we released xeus-sqlite, a Jupyter kernel that allows users to make SQLite queries directly from the notebook. With the needs of the Jupyter data science community in mind we decided…
]]>
+
+ Mariana Meireles
+
+
+
+
+ https://blog.jupyter.org/a-curiously-recurring-widget-library-261a65bd56fe
+
+ 2021-01-27T00:00:00.000Z
+ Diving into the implementation of xwidgets…
]]>
+
+ Sylvain Corlay
+
+
+
+
+ https://blog.jupyter.org/robotic-process-automation-with-jupyterlab-713b5630e457
+
+ 2021-01-18T00:00:00.000Z
+ Robotic Process Automation (RPA) differs from classical automation tools in that the actions to automate can be developed by observing a user perform a task in a graphical user interface, across…
]]>
+
+ Martin Renou, Johan Mabille
+
+
+
+
+ https://blog.jupyter.org/dashboarding-with-jupyterlab-3-789fcb1a5857
+
+ 2021-01-08T00:00:00.000Z
+ Project Jupyter offers a complete suite of open-source tools for the scientific computing community, reaching from the exploratory phase of a project to the presentation of the results. In this last…
]]>
+
+ Carlos Herrero, Jeremy Tuloup
+
+
+
+
+ https://blog.jupyter.org/jupyterlab-3-0-is-out-4f58385e25bb
+
+ 2021-01-05T00:00:00.000Z
+ The 3.0 release of JupyterLab brings many new features to users and substantial improvements to the extension distribution system.
]]>
+
+ Jeremy Tuloup
+
+
+
+
+ https://blog.llvm.org/posts/2020-12-21-interactive-cpp-for-data-science/
+
+ 2020-12-23T00:00:00.000Z
+ This post will discuss some applications of Cling developed to support data science researchers. In particular, interactively probing data and interfaces makes complex libraries and complex data…
]]>
+
+ Vassil Vassilev, David Lange, Simeon Ehrig, Sylvain Corlay
+
+
+
+
+ https://david-brochart.medium.com/xtensor-%EF%B8%8F-zarr-4f5cf25c65e5
+
+ 2020-12-15T00:00:00.000Z
+ A C++ implementation of the Zarr specification…
]]>
+
+ David Brochart
+
+
+
+
+ https://blog.jupyter.org/a-c-backend-for-vega-lite-bd2524b247c2
+
+ 2020-12-02T00:00:00.000Z
+ In this post, we present the first public release of XVega, a C++ library for producing Vega-Lite charts. Data science workflows differ from traditional software development in that engineers make…
]]>
+
+ Madhur Tandon
+
+
+
+
+ https://blog.jupyter.org/ipygany-jupyter-into-the-third-dimension-29a97597fc33
+
+ 2020-10-14T00:00:00.000Z
+ From Paraview to Mayavi, there are multiple solutions for data analysis on 3D meshes on the desktop. Most of these tools provide high-level APIs that can be driven with a scripting language like…
]]>
+
+ Martin Renou
+
+
+
+
+ https://medium.com/@mari_meir/rhumba-a-faster-r-distribution-d619fb93043a
+
+ 2020-10-13T00:00:00.000Z
+ CRAN is the official package manager for the R ecosystem. Unfortunately, simple operations such as creating new environments or installing packages with it can be very time-consuming due to the fact…
]]>
+
+ Mariana Meireles
+
+
+
+
+ https://blog.jupyter.org/the-templating-system-of-nbconvert-6-47ea781eacd2
+
+ 2020-09-26T00:00:00.000Z
+ One of the main changes in nbconvert 6 is the refactor of the template system, which should be easier to extend and build upon. In this article, we dive into the template system, and provide a…
]]>
+
+ Sylvain Corlay
+
+
+
+
+ https://medium.com/@mari_meir/memestra-a21c0c1f362
+
+ 2020-09-21T00:00:00.000Z
+ Modern IDE features such as interactive debugging, linting, code formatting, and refactoring tools are now available in JupyterLab, thanks to the JupyterLab-LSP extension and the recent release of…
]]>
+
+ Mariana Meireles
+
+
+
+
+ https://medium.com/@martinRenou/real-time-rendering-of-water-caustics-59cda1d74aa
+
+ 2020-08-27T00:00:00.000Z
+ In this article, I present an attempt for generalizing caustics computation in real-time using WebGL and ThreeJS. The fact that it is an attempt is important, finding a solution that works well in…
]]>
+
+ Martin Renou
+
+
+
+
+ https://blog.jupyter.org/jupyterlab-ros-3dc9dab7f421
+
+ 2020-08-11T00:00:00.000Z
+ Building the next generation of robotics cloud computing using ROS and JupyterLab
]]>
+
+ Carlos Herrero, Wolf Vollprecht
+
+
+
+
+ https://blog.jupyter.org/slicerjupyter-a-3d-slicer-kernel-for-interactive-publications-6f2ad829f635
+
+ 2020-07-08T00:00:00.000Z
+ Use Jupyter and 3D Slicer kernel to implement biomedical data processing workflows in a notebook.
]]>
+
+ Sylvain Corlay, Jean-Christophe Fillion-Robin, Mike Grauer, Andras Lasso, Matt MacCormick, Isaiah Norton, Steve Pieper, Martin Renou, Mike Sarahan
+
+
+
+
+ https://medium.com/@QuantStack/open-software-packaging-for-science-61cecee7fc23
+
+ 2020-07-19T00:00:00.000Z
+ Modern scientific applications typically depend on a very large number of libraries written in various programming languages, ranging from Fortran to TypeScript, C, C++, Python, etc. So, we need to…
]]>
+
+ Wolf Vollprecht, Mario Buikhuizen, Marianne Corvellec, Johan Mabille, David Brochart
+
+
+
+
+ https://blog.jupyter.org/a-jupyter-kernel-for-sqlite-9549c5dcf551
+
+ 2020-06-11T00:00:00.000Z
+ While it is well known in the Python scientific computing community, Jupyter is in fact a language-agnostic development environment. High-quality language kernels exist for the main languages of data…
]]>
+
+ Mariana Meireles
+
+
+
+
+ https://blog.jupyter.org/plasma-a-learning-platform-powered-by-jupyter-1b850fcd8624
+
+ 2020-05-11T00:00:00.000Z
+ Jupyter has been a great choice for education for many years. The Jupyter Notebook has become one of the most popular tools to conduct workshops, tutorials, and teach online classes. Recently we have…
]]>
+
+ Jeremy Tuloup
+
+
+
+
+ https://blog.jupyter.org/interactive-graph-visualization-in-jupyter-with-ipycytoscape-a8828a54ab63
+
+ 2020-04-30T00:00:00.000Z
+ The Jupyter widgets ecosystem offers a broad variety of data visualization tools for exploratory analysis in the notebook. However, we…
]]>
+
+ Mariana Meireles
+
+
+
+
+ https://blog.jupyter.org/a-visual-debugger-for-jupyter-914e61716559
+
+ 2020-03-25T00:00:00.000Z
+ Most of the progress made in software projects comes from incrementalism. The ability to quickly see the outcome of an execution and iterate has been one of the main reasons for the success of…
]]>
+
+ Jeremy Tuloup, Borys Palka, Johan Mabille, Martin Renou, Afshin Darian, Sylvain Corlay
+
+
+
+
+ https://blog.jupyter.org/report-on-the-jupyter-community-workshop-on-dashboarding-14f8ad9f3c0
+
+ 2020-02-14T00:00:00.000Z
+ From June 3rd to June 6th 2019, thirty-five developers from the Jupyter community met in Paris for a four-day workshop on dashboarding with Project Jupyter. For four days, attendees worked full time…
]]>
+
+ Sylvain Corlay
+
+
+
+
+ https://medium.com/@wolfv/introducing-scikit-geometry-ae1dccaad5fd
+
+ 2020-01-24T00:00:00.000Z
+ As a robotics researcher (but also in many other fields) computations on geometric primitives are used very frequently— but it’s harder than anticipated to find the right abstractions in a nice…
]]>
+
+ Wolf Vollprecht
+
+
+
+
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-8-n-iterators-7df77e3223f7
+
+ 2020-01-07T00:00:00.000Z
+ In the previous article, we implemented the broadcasting rules so that we can compute the shape of arbitrary complex trees that involve arrays with different but compatible shapes. This is the first…
]]>
+
+ Johan Mabille
+
+
+
+
+ https://medium.com/@wolfv/2019-in-review-d7d03fb0d17d
+
+ 2020-01-02T00:00:00.000Z
+ This year has seen major changes in xeus and xeus-python, driven by the requirements for developing a visual debugger. We have implemented a prototype that supports the Debug Adapter Protocol from…
]]>
+
+ Wolf Vollprecht
+
+
+
+
+ https://medium.com/@wolfv/robot-development-with-jupyter-ddae16d4e688
+
+ 2019-12-31T00:00:00.000Z
+ Jupyter and Voilà are two popular packages in the data science ecosystem. But the Jupyter plugins jupyter-ros and jupyter-amphion make them more interesting than ever for robotics applications. This…
]]>
+
+ Wolf Vollprecht
+
+
+
+
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-7-n-broadcasting-cf37a974d029
+
+ 2019-11-24T00:00:00.000Z
+ In the previous article, we implemented operator and mathematical function overloads so that we can build arbitrary complex expression trees and access their elements. Before we can assign an…
]]>
+
+ Johan Mabille
+
+
+
+
+ https://blog.jupyter.org/voila-gridstack-template-8a431c2b353e
+
+ 2019-11-11T00:00:00.000Z
+ Voilà is a new dashboarding solution from Jupyter ecosystem. It provides an easy-to-use tool to convert your Jupyter notebooks into standalone web applications. If you have not used it before, you…
]]>
+
+ Bartosz Telenczuk
+
+
+
+
+ https://blog.jupyter.org/a-slideshow-template-for-voil%C3%A0-apps-435f67d10b4f
+
+ 2019-10-29T00:00:00.000Z
+ Last June, QuantStack announced the first release of Voilà, a solution to turn Jupyter notebooks into standalone web applications. Voilà enforces security (preventing arbitrary code execution) while…
]]>
+
+ Marianne Corvellec
+
+
+
+
+ https://medium.com/@wolfv/ros-on-conda-forge-dca6827ac4b6
+
+ 2019-10-28T00:00:00.000Z
+ ROS is a fantastic and very large suite of software tools for Robotics. It’s used in many applications and with great success, ranging from the hobbyist market to industrial use cases. Most people…
]]>
+
+ Wolf Vollprecht
+
+
+
+
+ https://blog.jupyter.org/ipycanvas-a-python-canvas-for-jupyter-bbb51e4777f7
+
+ 2019-10-25T00:00:00.000Z
+ As you may already know, the Jupyter Notebook and JupyterLab are Browser-based applications. Browsers are incredibly powerful, they allow you to swap rich and interactive graphical interfaces…
]]>
+
+ Martin Renou
+
+
+
+
+ https://blog.jupyter.org/field-report-on-the-kernel-community-workshop-a4ad73a1a718
+
+ 2019-10-07T00:00:00.000Z
+ From May 27th to May 29, thirty developers from the Jupyter community met in Paris for a three-days workshop on the Jupyter kernel…
]]>
+
+ Sylvain Corlay
+
+
+
+
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-6-n-operator-overloading-984c2e5b4171
+
+ 2019-09-25T00:00:00.000Z
+ In the previous article, we introduced expression templates and developed the skeleton of the xfunction class, meant to represent a node of the abstract syntax tree of a tensor expression. We left…
]]>
+
+ Johan Mabille
+
+
+
+
+ https://blog.jupyter.org/interactive-gis-in-jupyter-with-ipyleaflet-52f9657fa7a
+
+ 2019-09-25T00:00:00.000Z
+ As Jupyter grew in popularity, a broad ecosystem of visualization packages based on Jupyter widgets has been developed, bringing even more interactivity to the Jupyter world. In this article, we dive…
]]>
+
+ Sylvain Corlay, Martin Renou
+
+
+
+
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-5-n-expression-templates-d07332e73d1d
+
+ 2019-09-05T00:00:00.000Z
+ In the previous articles, we started to implement an N-D container, xarray, which has value semantics and provides all the methods required to access its data. The next step is to give it computation…
]]>
+
+ Johan Mabille
+
+
+
+
+ https://blog.jupyter.org/building-a-calculator-jupyter-kernel-4aed5764a295
+
+ 2019-07-16T00:00:00.000Z
+ In order to provide a language-agnostic scientific development environment, the Jupyter project is built upon a well-specified protocol to communicate with the Kernel, the part of the infrastructure…
]]>
+
+ Vasavan Thiru, Thibault Lacharme
+
+
+
+
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-4-n-value-semantics-6baa6856d313
+
+ 2019-07-16T00:00:00.000Z
+ xtensor is a comprehensive framework for N-D arrays processing, including an extensible expression system, lazy evaluation, and many other…
]]>
+
+ Johan Mabille
+
+
+
+
+ https://blog.jupyter.org/introducing-templates-for-jupyter-widget-layouts-f72bcb35a662
+
+ 2019-07-04T00:00:00.000Z
+ Notebooks come alive with Jupyter widgets, which allow users to produce interactive GUIs inline in the Jupyter notebook or JupyterLab. You can either use them to add a few interactive controls and…
]]>
+
+ Bartosz Telenczuk
+
+
+
+
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-3-n-the-constructors-65a177260638
+
+ 2019-06-24T00:00:00.000Z
+ In the previous article, we detailed the implementation of a generic access operator for our N-D container. Two more things to implement before the xarray class can be used in practice are…
]]>
+
+ Johan Mabille
+
+
+
+
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-2-n-access-operators-57e8e3852263
+
+ 2019-06-20T00:00:00.000Z
+ In the previous article, we started to design an N-dimensional container. We detailed the implementation of methods related to shape, strides, and memory layout. Let us now get to the access…
]]>
+
+ Johan Mabille
+
+
+
+
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-1-n-n-dimensional-containers-f79f9f4966a7
+
+ 2019-06-17T00:00:00.000Z
+ xtensor is a C++ library meant for numerical analysis with multi-dimensional array expressions. It exposes an API similar to that of NumPy…
]]>
+
+ Johan Mabille
+
+
+
+
+ https://blog.jupyter.org/and-voil%C3%A0-f6a2c08a4a93
+
+ 2019-06-11T00:00:00.000Z
+ The goal of Project Jupyter is to improve the workflows of researchers, educators, scientists, and other practitioners of scientific computing, from the exploratory phase of their work to the…
]]>
+
+ Sylvain Corlay, Maarten Breddels
+
+
+
+
+ https://medium.com/@wolfv/mamba-development-news-29e32aaa8d6c
+
+ 2019-06-10T00:00:00.000Z
+ Mamba is a drop-in replacement for conda, the awesome cross-platform package manager. In our opinion, conda has one tiny problem: it’s too slow when many packages are installed, or when installing…
]]>
+
+ Wolf Vollprecht
+
+
+
+
+ https://medium.com/@wolfv/building-an-open-source-continuous-benchmark-system-717839093962
+
+ 2019-05-29T00:00:00.000Z
+ Concourse is a continuous integration software, and we use it for two purposes: multi-project continuous integration, and continuous benchmarking. It’s easy to setup on a low cost server, using…
]]>
+
+ Wolf Vollprecht
+
+
+
+
+ https://blog.jupyter.org/ros-jupyter-b7e82b5e1202
+
+ 2019-04-07T00:00:00.000Z
+ Historically, the ROS (Robot Operating System) community has relied on Qt for building complex user interfaces. Nowadays, the Jupyter notebook and the ipywidgets framework offer a compelling…
]]>
+
+ Wolf Vollprecht
+
+
+
+
+ https://medium.com/@wolfv/making-conda-fast-again-4da4debfb3b7
+
+ 2019-03-28T00:00:00.000Z
+ You might have seen the announcement on Twitter: at QuantStack we’ve been working on making a prototype of a conda-compatible package manager called mamba. Conda is a great tool to distribute data…
]]>
+
+ Wolf Vollprecht
+
+
+
+
+ https://medium.com/data-science/interactive-spreadsheets-in-jupyter-32ab6ec0f4ff
+
+ 2019-03-08T00:00:00.000Z
+ ipysheet is a new interactive widgets library that aims at implementing the core features of a good spreadsheet application and more…
]]>
+
+ Martin Renou
+
+
+
+
+ https://blog.jupyter.org/a-new-python-kernel-for-jupyter-fcdf211e30a8
+
+ 2019-01-09T00:00:00.000Z
+ Project Jupyter aims at providing a consistent set of tools for interactive computing workflows across multiple programming languages. Jupyter projects are popular at all stages of a research project…
]]>
+
+ Martin Renou
+
+
+
+
+ https://medium.com/@johan.mabille/xframe-towards-a-c-dataframe-26e1ccde211b
+
+ 2019-01-04T00:00:00.000Z
+ For a very long time, the C++ programming language lacked a high-level toolset for scientific computing. Data structures such as N-dimensional arrays, data frames, are the bread and butter of the R…
]]>
+
+ Johan Mabille
+
+
+
+
+ https://medium.com/@johan.mabille/designing-language-bindings-with-xtensor-f32aa0f20db
+
+ 2018-11-30T00:00:00.000Z
+ xtensor and its satellite projects make it easy to implement a feature once in C++ and expose it to the main languages of data science, such as Python, Julia and R with little extra work. Although…
]]>
+
+ Johan Mabille
+
+
+
+
+ https://medium.com/data-science/video-streaming-in-the-jupyter-notebook-635bc5809e85
+
+ 2018-11-19T00:00:00.000Z
+ ipywidgets plays an essential part in the Jupyter ecosystem; it brings interactivity between user and data. Widgets are eventful Python objects that often have a visual representation in the Jupyter…
]]>
+
+ Martin Renou
+
+
+
+
+ https://towardsdatascience.com/the-xtensor-vision-552dd978e9ad
+
+ 2018-11-10T00:00:00.000Z
+ Here we’re laying out a vision for the xtensor project, the n-dimensional array in the C++ language — that makes it easy to write high-performance code and bind it to the languages of data science…
]]>
+
+ Wolf Vollprecht
+
+
+
+
+ https://serge-sans-paille.github.io/pythran-stories/bye-bye-boostsimd-welcome-xsimd.html
+
+ 2019-10-31T00:00:00.000Z
+ Boost.simd provides a C++ abstraction of vector type, allowing for efficient vectorization of array computations. It has been (optionally) used as part of the expression template engine of Pythran for a long time, a great collaboration that led to several patches in boost.simd, and great performance for Pythran.
]]>
+
+ Serge Guelton
+
+
+
+
+ https://medium.com/@QuantStack/xtensor-c-and-the-julia-challenge-643d4b119761
+
+ 2018-10-24T00:00:00.000Z
+ Last mon, Simon Danisch launched the Julia Language Challenge, a programming challenge from a member of the Julia community to other programming languages. with high performances. This can be…
]]>
+
+ Sylvain Corlay, Johan Mabille, Wolf Vollprecht
+
+
+
+
+ https://medium.com/@wolfv/the-julia-challenge-in-c-21272d36c002
+
+ 2018-10-12T00:00:00.000Z
+ Recently, some folks of the Julia community were boasting about the expressiveness of the Julia programming language, compared to older languages. That’s how they started the Julia Challenge. The…
]]>
+
+ Wolf Vollprecht
+
+
+
+
+ https://blog.jupyter.org/interpreted-c-for-gis-with-jupyter-ae191bc6fb8e
+
+ 2018-04-24T00:00:00.000Z
+ The recent release of the Jupyter kernel for C++, based on the Cling interpreter enabled a number of new workflows for the users of the C++ programming language. More than a limited set of base…
]]>
+
+ Martin Renou
+
+
+
+
+ https://blog.jupyter.org/authoring-custom-jupyter-widgets-2884a462e724
+
+ 2018-03-05T00:00:00.000Z
+ Jupyter interactive widgets enhance the notebook experience by allowing users to create graphical user interfaces. They enable richer interaction with the data and computing resources. While the base…
]]>
+
+ Olivier Borderies, Olivier Coudray, Pierre Marion
+
+
+
+
+ https://blog.jupyter.org/jupyter-receives-the-acm-software-system-award-d433b0dfe3a2
+
+ 2018-03-02T00:00:00.000Z
+ It is our pleasure to announce that Project Jupyter has been awarded the 2017 ACM Software System Awa, a significant honor for the project. We are humbled to join an illustrious list of projects…
]]>
+
+ Project Jupyter
+
+
+
+
+ https://blog.jupyter.org/a-diagram-editor-for-jupyterlab-a254121ff919
+
+ 2018-02-26T00:00:00.000Z
+ The new JupyterLab interface is much more than a replacement for the classic notebook. It aims to bring together all the pieces required for a complete scientific workflow. The extension-based…
]]>
+
+ Wolf Vollprecht
+
+
+
+
+ https://medium.com/@wolfv/fast-reductions-in-xtensor-with-simd-212a8543960a
+
+ 2018-02-20T00:00:00.000Z
+ xtensor has a wealth of mathematical functions available already: we support a lot of the NumPy API right there in C++. One of the areas where we were a bit slower than NumPy in the past were…
]]>
+
+ Wolf Vollprecht
+
+
+
+
+ https://medium.com/@wolfv/faster-xtensor-87fcbe7f5293
+
+ 2018-02-18T00:00:00.000Z
+ Knowing the size of the memory that is to be allocated at compile time can improve the runtime performance a lot — the compiler can already reserve the required space on the stack (instead of having…
]]>
+
+ Wolf Vollprecht
+
+
+
+
+ https://blog.jupyter.org/interactive-workflows-for-c-with-jupyter-fe9b54227d92
+
+ 2017-11-29T00:00:00.000Z
+ Scientists, educators and engineers not only use programming languages to build software systems, but also in interactive workflows, using the tools available to explore a problem and reason about…
]]>
+
+ Sylvain Corlay, Loic Gouarin, Johan Mabille, Wolf Vollprecht
+
+
+
+
+ https://medium.com/@SylvainCorlay/scientific-computing-in-a-polyglot-world-with-xtensor-d81ff3865d6
+
+ 2017-05-05T00:00:00.000Z
+ The One Language to Rule Them All probably does not exist yet. In the world of interactive scientific computing, countless articles and blog posts argue on the merits of R, Python, Julia and other…
]]>
+
+ Sylvain Corlay
+
+
+
\ No newline at end of file
diff --git a/static/fonts/font-awesome/brands.css b/static/fonts/font-awesome/brands.css
deleted file mode 100644
index 9ab231708..000000000
--- a/static/fonts/font-awesome/brands.css
+++ /dev/null
@@ -1,2029 +0,0 @@
-/*!
- * Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
- * License - https://fontawesome.com/license (Commercial License)
- * Copyright 2022 Fonticons, Inc.
- */
-:root,
-:host {
- --fa-style-family-brands: "Font Awesome 6 Brands";
- --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands";
-}
-
-@font-face {
- font-family: "Font Awesome 6 Brands";
- font-style: normal;
- font-weight: 400;
- font-display: block;
- src:
- url("/fonts/font-awesome/fa-brands-400.woff2") format("woff2"),
- url("/fonts/font-awesome/fa-brands-400.ttf") format("truetype");
-}
-
-.fab,
-.fa-brands {
- font-weight: 400;
-}
-
-.fa-monero:before {
- content: "\f3d0";
-}
-
-.fa-hooli:before {
- content: "\f427";
-}
-
-.fa-yelp:before {
- content: "\f1e9";
-}
-
-.fa-cc-visa:before {
- content: "\f1f0";
-}
-
-.fa-lastfm:before {
- content: "\f202";
-}
-
-.fa-shopware:before {
- content: "\f5b5";
-}
-
-.fa-creative-commons-nc:before {
- content: "\f4e8";
-}
-
-.fa-aws:before {
- content: "\f375";
-}
-
-.fa-redhat:before {
- content: "\f7bc";
-}
-
-.fa-yoast:before {
- content: "\f2b1";
-}
-
-.fa-cloudflare:before {
- content: "\e07d";
-}
-
-.fa-ups:before {
- content: "\f7e0";
-}
-
-.fa-wpexplorer:before {
- content: "\f2de";
-}
-
-.fa-dyalog:before {
- content: "\f399";
-}
-
-.fa-bity:before {
- content: "\f37a";
-}
-
-.fa-stackpath:before {
- content: "\f842";
-}
-
-.fa-buysellads:before {
- content: "\f20d";
-}
-
-.fa-first-order:before {
- content: "\f2b0";
-}
-
-.fa-modx:before {
- content: "\f285";
-}
-
-.fa-guilded:before {
- content: "\e07e";
-}
-
-.fa-vnv:before {
- content: "\f40b";
-}
-
-.fa-square-js:before {
- content: "\f3b9";
-}
-
-.fa-js-square:before {
- content: "\f3b9";
-}
-
-.fa-microsoft:before {
- content: "\f3ca";
-}
-
-.fa-qq:before {
- content: "\f1d6";
-}
-
-.fa-orcid:before {
- content: "\f8d2";
-}
-
-.fa-java:before {
- content: "\f4e4";
-}
-
-.fa-invision:before {
- content: "\f7b0";
-}
-
-.fa-creative-commons-pd-alt:before {
- content: "\f4ed";
-}
-
-.fa-centercode:before {
- content: "\f380";
-}
-
-.fa-glide-g:before {
- content: "\f2a6";
-}
-
-.fa-drupal:before {
- content: "\f1a9";
-}
-
-.fa-hire-a-helper:before {
- content: "\f3b0";
-}
-
-.fa-creative-commons-by:before {
- content: "\f4e7";
-}
-
-.fa-unity:before {
- content: "\e049";
-}
-
-.fa-whmcs:before {
- content: "\f40d";
-}
-
-.fa-rocketchat:before {
- content: "\f3e8";
-}
-
-.fa-vk:before {
- content: "\f189";
-}
-
-.fa-untappd:before {
- content: "\f405";
-}
-
-.fa-mailchimp:before {
- content: "\f59e";
-}
-
-.fa-css3-alt:before {
- content: "\f38b";
-}
-
-.fa-square-reddit:before {
- content: "\f1a2";
-}
-
-.fa-reddit-square:before {
- content: "\f1a2";
-}
-
-.fa-vimeo-v:before {
- content: "\f27d";
-}
-
-.fa-contao:before {
- content: "\f26d";
-}
-
-.fa-square-font-awesome:before {
- content: "\e5ad";
-}
-
-.fa-deskpro:before {
- content: "\f38f";
-}
-
-.fa-sistrix:before {
- content: "\f3ee";
-}
-
-.fa-square-instagram:before {
- content: "\e055";
-}
-
-.fa-instagram-square:before {
- content: "\e055";
-}
-
-.fa-battle-net:before {
- content: "\f835";
-}
-
-.fa-the-red-yeti:before {
- content: "\f69d";
-}
-
-.fa-square-hacker-news:before {
- content: "\f3af";
-}
-
-.fa-hacker-news-square:before {
- content: "\f3af";
-}
-
-.fa-edge:before {
- content: "\f282";
-}
-
-.fa-napster:before {
- content: "\f3d2";
-}
-
-.fa-square-snapchat:before {
- content: "\f2ad";
-}
-
-.fa-snapchat-square:before {
- content: "\f2ad";
-}
-
-.fa-google-plus-g:before {
- content: "\f0d5";
-}
-
-.fa-artstation:before {
- content: "\f77a";
-}
-
-.fa-markdown:before {
- content: "\f60f";
-}
-
-.fa-sourcetree:before {
- content: "\f7d3";
-}
-
-.fa-google-plus:before {
- content: "\f2b3";
-}
-
-.fa-diaspora:before {
- content: "\f791";
-}
-
-.fa-foursquare:before {
- content: "\f180";
-}
-
-.fa-stack-overflow:before {
- content: "\f16c";
-}
-
-.fa-github-alt:before {
- content: "\f113";
-}
-
-.fa-phoenix-squadron:before {
- content: "\f511";
-}
-
-.fa-pagelines:before {
- content: "\f18c";
-}
-
-.fa-algolia:before {
- content: "\f36c";
-}
-
-.fa-red-river:before {
- content: "\f3e3";
-}
-
-.fa-creative-commons-sa:before {
- content: "\f4ef";
-}
-
-.fa-safari:before {
- content: "\f267";
-}
-
-.fa-google:before {
- content: "\f1a0";
-}
-
-.fa-square-font-awesome-stroke:before {
- content: "\f35c";
-}
-
-.fa-font-awesome-alt:before {
- content: "\f35c";
-}
-
-.fa-atlassian:before {
- content: "\f77b";
-}
-
-.fa-linkedin-in:before {
- content: "\f0e1";
-}
-
-.fa-digital-ocean:before {
- content: "\f391";
-}
-
-.fa-nimblr:before {
- content: "\f5a8";
-}
-
-.fa-chromecast:before {
- content: "\f838";
-}
-
-.fa-evernote:before {
- content: "\f839";
-}
-
-.fa-hacker-news:before {
- content: "\f1d4";
-}
-
-.fa-creative-commons-sampling:before {
- content: "\f4f0";
-}
-
-.fa-adversal:before {
- content: "\f36a";
-}
-
-.fa-creative-commons:before {
- content: "\f25e";
-}
-
-.fa-watchman-monitoring:before {
- content: "\e087";
-}
-
-.fa-fonticons:before {
- content: "\f280";
-}
-
-.fa-weixin:before {
- content: "\f1d7";
-}
-
-.fa-shirtsinbulk:before {
- content: "\f214";
-}
-
-.fa-codepen:before {
- content: "\f1cb";
-}
-
-.fa-git-alt:before {
- content: "\f841";
-}
-
-.fa-lyft:before {
- content: "\f3c3";
-}
-
-.fa-rev:before {
- content: "\f5b2";
-}
-
-.fa-windows:before {
- content: "\f17a";
-}
-
-.fa-wizards-of-the-coast:before {
- content: "\f730";
-}
-
-.fa-square-viadeo:before {
- content: "\f2aa";
-}
-
-.fa-viadeo-square:before {
- content: "\f2aa";
-}
-
-.fa-meetup:before {
- content: "\f2e0";
-}
-
-.fa-centos:before {
- content: "\f789";
-}
-
-.fa-adn:before {
- content: "\f170";
-}
-
-.fa-cloudsmith:before {
- content: "\f384";
-}
-
-.fa-pied-piper-alt:before {
- content: "\f1a8";
-}
-
-.fa-square-dribbble:before {
- content: "\f397";
-}
-
-.fa-dribbble-square:before {
- content: "\f397";
-}
-
-.fa-codiepie:before {
- content: "\f284";
-}
-
-.fa-node:before {
- content: "\f419";
-}
-
-.fa-mix:before {
- content: "\f3cb";
-}
-
-.fa-steam:before {
- content: "\f1b6";
-}
-
-.fa-cc-apple-pay:before {
- content: "\f416";
-}
-
-.fa-scribd:before {
- content: "\f28a";
-}
-
-.fa-openid:before {
- content: "\f19b";
-}
-
-.fa-instalod:before {
- content: "\e081";
-}
-
-.fa-expeditedssl:before {
- content: "\f23e";
-}
-
-.fa-sellcast:before {
- content: "\f2da";
-}
-
-.fa-square-twitter:before {
- content: "\f081";
-}
-
-.fa-twitter-square:before {
- content: "\f081";
-}
-
-.fa-r-project:before {
- content: "\f4f7";
-}
-
-.fa-delicious:before {
- content: "\f1a5";
-}
-
-.fa-freebsd:before {
- content: "\f3a4";
-}
-
-.fa-vuejs:before {
- content: "\f41f";
-}
-
-.fa-accusoft:before {
- content: "\f369";
-}
-
-.fa-ioxhost:before {
- content: "\f208";
-}
-
-.fa-fonticons-fi:before {
- content: "\f3a2";
-}
-
-.fa-app-store:before {
- content: "\f36f";
-}
-
-.fa-cc-mastercard:before {
- content: "\f1f1";
-}
-
-.fa-itunes-note:before {
- content: "\f3b5";
-}
-
-.fa-golang:before {
- content: "\e40f";
-}
-
-.fa-kickstarter:before {
- content: "\f3bb";
-}
-
-.fa-grav:before {
- content: "\f2d6";
-}
-
-.fa-weibo:before {
- content: "\f18a";
-}
-
-.fa-uncharted:before {
- content: "\e084";
-}
-
-.fa-firstdraft:before {
- content: "\f3a1";
-}
-
-.fa-square-youtube:before {
- content: "\f431";
-}
-
-.fa-youtube-square:before {
- content: "\f431";
-}
-
-.fa-wikipedia-w:before {
- content: "\f266";
-}
-
-.fa-wpressr:before {
- content: "\f3e4";
-}
-
-.fa-rendact:before {
- content: "\f3e4";
-}
-
-.fa-angellist:before {
- content: "\f209";
-}
-
-.fa-galactic-republic:before {
- content: "\f50c";
-}
-
-.fa-nfc-directional:before {
- content: "\e530";
-}
-
-.fa-skype:before {
- content: "\f17e";
-}
-
-.fa-joget:before {
- content: "\f3b7";
-}
-
-.fa-fedora:before {
- content: "\f798";
-}
-
-.fa-stripe-s:before {
- content: "\f42a";
-}
-
-.fa-meta:before {
- content: "\e49b";
-}
-
-.fa-laravel:before {
- content: "\f3bd";
-}
-
-.fa-hotjar:before {
- content: "\f3b1";
-}
-
-.fa-bluetooth-b:before {
- content: "\f294";
-}
-
-.fa-sticker-mule:before {
- content: "\f3f7";
-}
-
-.fa-creative-commons-zero:before {
- content: "\f4f3";
-}
-
-.fa-hips:before {
- content: "\f452";
-}
-
-.fa-behance:before {
- content: "\f1b4";
-}
-
-.fa-reddit:before {
- content: "\f1a1";
-}
-
-.fa-discord:before {
- content: "\f392";
-}
-
-.fa-chrome:before {
- content: "\f268";
-}
-
-.fa-app-store-ios:before {
- content: "\f370";
-}
-
-.fa-cc-discover:before {
- content: "\f1f2";
-}
-
-.fa-wpbeginner:before {
- content: "\f297";
-}
-
-.fa-confluence:before {
- content: "\f78d";
-}
-
-.fa-mdb:before {
- content: "\f8ca";
-}
-
-.fa-dochub:before {
- content: "\f394";
-}
-
-.fa-accessible-icon:before {
- content: "\f368";
-}
-
-.fa-ebay:before {
- content: "\f4f4";
-}
-
-.fa-amazon:before {
- content: "\f270";
-}
-
-.fa-unsplash:before {
- content: "\e07c";
-}
-
-.fa-yarn:before {
- content: "\f7e3";
-}
-
-.fa-square-steam:before {
- content: "\f1b7";
-}
-
-.fa-steam-square:before {
- content: "\f1b7";
-}
-
-.fa-500px:before {
- content: "\f26e";
-}
-
-.fa-square-vimeo:before {
- content: "\f194";
-}
-
-.fa-vimeo-square:before {
- content: "\f194";
-}
-
-.fa-asymmetrik:before {
- content: "\f372";
-}
-
-.fa-font-awesome:before {
- content: "\f2b4";
-}
-
-.fa-font-awesome-flag:before {
- content: "\f2b4";
-}
-
-.fa-font-awesome-logo-full:before {
- content: "\f2b4";
-}
-
-.fa-gratipay:before {
- content: "\f184";
-}
-
-.fa-apple:before {
- content: "\f179";
-}
-
-.fa-hive:before {
- content: "\e07f";
-}
-
-.fa-gitkraken:before {
- content: "\f3a6";
-}
-
-.fa-keybase:before {
- content: "\f4f5";
-}
-
-.fa-apple-pay:before {
- content: "\f415";
-}
-
-.fa-padlet:before {
- content: "\e4a0";
-}
-
-.fa-amazon-pay:before {
- content: "\f42c";
-}
-
-.fa-square-github:before {
- content: "\f092";
-}
-
-.fa-github-square:before {
- content: "\f092";
-}
-
-.fa-stumbleupon:before {
- content: "\f1a4";
-}
-
-.fa-fedex:before {
- content: "\f797";
-}
-
-.fa-phoenix-framework:before {
- content: "\f3dc";
-}
-
-.fa-shopify:before {
- content: "\e057";
-}
-
-.fa-neos:before {
- content: "\f612";
-}
-
-.fa-hackerrank:before {
- content: "\f5f7";
-}
-
-.fa-researchgate:before {
- content: "\f4f8";
-}
-
-.fa-swift:before {
- content: "\f8e1";
-}
-
-.fa-angular:before {
- content: "\f420";
-}
-
-.fa-speakap:before {
- content: "\f3f3";
-}
-
-.fa-angrycreative:before {
- content: "\f36e";
-}
-
-.fa-y-combinator:before {
- content: "\f23b";
-}
-
-.fa-empire:before {
- content: "\f1d1";
-}
-
-.fa-envira:before {
- content: "\f299";
-}
-
-.fa-square-gitlab:before {
- content: "\e5ae";
-}
-
-.fa-gitlab-square:before {
- content: "\e5ae";
-}
-
-.fa-studiovinari:before {
- content: "\f3f8";
-}
-
-.fa-pied-piper:before {
- content: "\f2ae";
-}
-
-.fa-wordpress:before {
- content: "\f19a";
-}
-
-.fa-product-hunt:before {
- content: "\f288";
-}
-
-.fa-firefox:before {
- content: "\f269";
-}
-
-.fa-linode:before {
- content: "\f2b8";
-}
-
-.fa-goodreads:before {
- content: "\f3a8";
-}
-
-.fa-square-odnoklassniki:before {
- content: "\f264";
-}
-
-.fa-odnoklassniki-square:before {
- content: "\f264";
-}
-
-.fa-jsfiddle:before {
- content: "\f1cc";
-}
-
-.fa-sith:before {
- content: "\f512";
-}
-
-.fa-themeisle:before {
- content: "\f2b2";
-}
-
-.fa-page4:before {
- content: "\f3d7";
-}
-
-.fa-hashnode:before {
- content: "\e499";
-}
-
-.fa-react:before {
- content: "\f41b";
-}
-
-.fa-cc-paypal:before {
- content: "\f1f4";
-}
-
-.fa-squarespace:before {
- content: "\f5be";
-}
-
-.fa-cc-stripe:before {
- content: "\f1f5";
-}
-
-.fa-creative-commons-share:before {
- content: "\f4f2";
-}
-
-.fa-bitcoin:before {
- content: "\f379";
-}
-
-.fa-keycdn:before {
- content: "\f3ba";
-}
-
-.fa-opera:before {
- content: "\f26a";
-}
-
-.fa-itch-io:before {
- content: "\f83a";
-}
-
-.fa-umbraco:before {
- content: "\f8e8";
-}
-
-.fa-galactic-senate:before {
- content: "\f50d";
-}
-
-.fa-ubuntu:before {
- content: "\f7df";
-}
-
-.fa-draft2digital:before {
- content: "\f396";
-}
-
-.fa-stripe:before {
- content: "\f429";
-}
-
-.fa-houzz:before {
- content: "\f27c";
-}
-
-.fa-gg:before {
- content: "\f260";
-}
-
-.fa-dhl:before {
- content: "\f790";
-}
-
-.fa-square-pinterest:before {
- content: "\f0d3";
-}
-
-.fa-pinterest-square:before {
- content: "\f0d3";
-}
-
-.fa-xing:before {
- content: "\f168";
-}
-
-.fa-blackberry:before {
- content: "\f37b";
-}
-
-.fa-creative-commons-pd:before {
- content: "\f4ec";
-}
-
-.fa-playstation:before {
- content: "\f3df";
-}
-
-.fa-quinscape:before {
- content: "\f459";
-}
-
-.fa-less:before {
- content: "\f41d";
-}
-
-.fa-blogger-b:before {
- content: "\f37d";
-}
-
-.fa-opencart:before {
- content: "\f23d";
-}
-
-.fa-vine:before {
- content: "\f1ca";
-}
-
-.fa-paypal:before {
- content: "\f1ed";
-}
-
-.fa-gitlab:before {
- content: "\f296";
-}
-
-.fa-typo3:before {
- content: "\f42b";
-}
-
-.fa-reddit-alien:before {
- content: "\f281";
-}
-
-.fa-yahoo:before {
- content: "\f19e";
-}
-
-.fa-dailymotion:before {
- content: "\e052";
-}
-
-.fa-affiliatetheme:before {
- content: "\f36b";
-}
-
-.fa-pied-piper-pp:before {
- content: "\f1a7";
-}
-
-.fa-bootstrap:before {
- content: "\f836";
-}
-
-.fa-odnoklassniki:before {
- content: "\f263";
-}
-
-.fa-nfc-symbol:before {
- content: "\e531";
-}
-
-.fa-ethereum:before {
- content: "\f42e";
-}
-
-.fa-speaker-deck:before {
- content: "\f83c";
-}
-
-.fa-creative-commons-nc-eu:before {
- content: "\f4e9";
-}
-
-.fa-patreon:before {
- content: "\f3d9";
-}
-
-.fa-avianex:before {
- content: "\f374";
-}
-
-.fa-ello:before {
- content: "\f5f1";
-}
-
-.fa-gofore:before {
- content: "\f3a7";
-}
-
-.fa-bimobject:before {
- content: "\f378";
-}
-
-.fa-facebook-f:before {
- content: "\f39e";
-}
-
-.fa-square-google-plus:before {
- content: "\f0d4";
-}
-
-.fa-google-plus-square:before {
- content: "\f0d4";
-}
-
-.fa-mandalorian:before {
- content: "\f50f";
-}
-
-.fa-first-order-alt:before {
- content: "\f50a";
-}
-
-.fa-osi:before {
- content: "\f41a";
-}
-
-.fa-google-wallet:before {
- content: "\f1ee";
-}
-
-.fa-d-and-d-beyond:before {
- content: "\f6ca";
-}
-
-.fa-periscope:before {
- content: "\f3da";
-}
-
-.fa-fulcrum:before {
- content: "\f50b";
-}
-
-.fa-cloudscale:before {
- content: "\f383";
-}
-
-.fa-forumbee:before {
- content: "\f211";
-}
-
-.fa-mizuni:before {
- content: "\f3cc";
-}
-
-.fa-schlix:before {
- content: "\f3ea";
-}
-
-.fa-square-xing:before {
- content: "\f169";
-}
-
-.fa-xing-square:before {
- content: "\f169";
-}
-
-.fa-bandcamp:before {
- content: "\f2d5";
-}
-
-.fa-wpforms:before {
- content: "\f298";
-}
-
-.fa-cloudversify:before {
- content: "\f385";
-}
-
-.fa-usps:before {
- content: "\f7e1";
-}
-
-.fa-megaport:before {
- content: "\f5a3";
-}
-
-.fa-magento:before {
- content: "\f3c4";
-}
-
-.fa-spotify:before {
- content: "\f1bc";
-}
-
-.fa-optin-monster:before {
- content: "\f23c";
-}
-
-.fa-fly:before {
- content: "\f417";
-}
-
-.fa-aviato:before {
- content: "\f421";
-}
-
-.fa-itunes:before {
- content: "\f3b4";
-}
-
-.fa-cuttlefish:before {
- content: "\f38c";
-}
-
-.fa-blogger:before {
- content: "\f37c";
-}
-
-.fa-flickr:before {
- content: "\f16e";
-}
-
-.fa-viber:before {
- content: "\f409";
-}
-
-.fa-soundcloud:before {
- content: "\f1be";
-}
-
-.fa-digg:before {
- content: "\f1a6";
-}
-
-.fa-tencent-weibo:before {
- content: "\f1d5";
-}
-
-.fa-symfony:before {
- content: "\f83d";
-}
-
-.fa-maxcdn:before {
- content: "\f136";
-}
-
-.fa-etsy:before {
- content: "\f2d7";
-}
-
-.fa-facebook-messenger:before {
- content: "\f39f";
-}
-
-.fa-audible:before {
- content: "\f373";
-}
-
-.fa-think-peaks:before {
- content: "\f731";
-}
-
-.fa-bilibili:before {
- content: "\e3d9";
-}
-
-.fa-erlang:before {
- content: "\f39d";
-}
-
-.fa-cotton-bureau:before {
- content: "\f89e";
-}
-
-.fa-dashcube:before {
- content: "\f210";
-}
-
-.fa-42-group:before {
- content: "\e080";
-}
-
-.fa-innosoft:before {
- content: "\e080";
-}
-
-.fa-stack-exchange:before {
- content: "\f18d";
-}
-
-.fa-elementor:before {
- content: "\f430";
-}
-
-.fa-square-pied-piper:before {
- content: "\e01e";
-}
-
-.fa-pied-piper-square:before {
- content: "\e01e";
-}
-
-.fa-creative-commons-nd:before {
- content: "\f4eb";
-}
-
-.fa-palfed:before {
- content: "\f3d8";
-}
-
-.fa-superpowers:before {
- content: "\f2dd";
-}
-
-.fa-resolving:before {
- content: "\f3e7";
-}
-
-.fa-xbox:before {
- content: "\f412";
-}
-
-.fa-searchengin:before {
- content: "\f3eb";
-}
-
-.fa-tiktok:before {
- content: "\e07b";
-}
-
-.fa-square-facebook:before {
- content: "\f082";
-}
-
-.fa-facebook-square:before {
- content: "\f082";
-}
-
-.fa-renren:before {
- content: "\f18b";
-}
-
-.fa-linux:before {
- content: "\f17c";
-}
-
-.fa-glide:before {
- content: "\f2a5";
-}
-
-.fa-linkedin:before {
- content: "\f08c";
-}
-
-.fa-hubspot:before {
- content: "\f3b2";
-}
-
-.fa-deploydog:before {
- content: "\f38e";
-}
-
-.fa-twitch:before {
- content: "\f1e8";
-}
-
-.fa-ravelry:before {
- content: "\f2d9";
-}
-
-.fa-mixer:before {
- content: "\e056";
-}
-
-.fa-square-lastfm:before {
- content: "\f203";
-}
-
-.fa-lastfm-square:before {
- content: "\f203";
-}
-
-.fa-vimeo:before {
- content: "\f40a";
-}
-
-.fa-mendeley:before {
- content: "\f7b3";
-}
-
-.fa-uniregistry:before {
- content: "\f404";
-}
-
-.fa-figma:before {
- content: "\f799";
-}
-
-.fa-creative-commons-remix:before {
- content: "\f4ee";
-}
-
-.fa-cc-amazon-pay:before {
- content: "\f42d";
-}
-
-.fa-dropbox:before {
- content: "\f16b";
-}
-
-.fa-instagram:before {
- content: "\f16d";
-}
-
-.fa-cmplid:before {
- content: "\e360";
-}
-
-.fa-facebook:before {
- content: "\f09a";
-}
-
-.fa-gripfire:before {
- content: "\f3ac";
-}
-
-.fa-jedi-order:before {
- content: "\f50e";
-}
-
-.fa-uikit:before {
- content: "\f403";
-}
-
-.fa-fort-awesome-alt:before {
- content: "\f3a3";
-}
-
-.fa-phabricator:before {
- content: "\f3db";
-}
-
-.fa-ussunnah:before {
- content: "\f407";
-}
-
-.fa-earlybirds:before {
- content: "\f39a";
-}
-
-.fa-trade-federation:before {
- content: "\f513";
-}
-
-.fa-autoprefixer:before {
- content: "\f41c";
-}
-
-.fa-whatsapp:before {
- content: "\f232";
-}
-
-.fa-slideshare:before {
- content: "\f1e7";
-}
-
-.fa-google-play:before {
- content: "\f3ab";
-}
-
-.fa-viadeo:before {
- content: "\f2a9";
-}
-
-.fa-line:before {
- content: "\f3c0";
-}
-
-.fa-google-drive:before {
- content: "\f3aa";
-}
-
-.fa-servicestack:before {
- content: "\f3ec";
-}
-
-.fa-simplybuilt:before {
- content: "\f215";
-}
-
-.fa-bitbucket:before {
- content: "\f171";
-}
-
-.fa-imdb:before {
- content: "\f2d8";
-}
-
-.fa-deezer:before {
- content: "\e077";
-}
-
-.fa-raspberry-pi:before {
- content: "\f7bb";
-}
-
-.fa-jira:before {
- content: "\f7b1";
-}
-
-.fa-docker:before {
- content: "\f395";
-}
-
-.fa-screenpal:before {
- content: "\e570";
-}
-
-.fa-bluetooth:before {
- content: "\f293";
-}
-
-.fa-gitter:before {
- content: "\f426";
-}
-
-.fa-d-and-d:before {
- content: "\f38d";
-}
-
-.fa-microblog:before {
- content: "\e01a";
-}
-
-.fa-cc-diners-club:before {
- content: "\f24c";
-}
-
-.fa-gg-circle:before {
- content: "\f261";
-}
-
-.fa-pied-piper-hat:before {
- content: "\f4e5";
-}
-
-.fa-kickstarter-k:before {
- content: "\f3bc";
-}
-
-.fa-yandex:before {
- content: "\f413";
-}
-
-.fa-readme:before {
- content: "\f4d5";
-}
-
-.fa-html5:before {
- content: "\f13b";
-}
-
-.fa-sellsy:before {
- content: "\f213";
-}
-
-.fa-sass:before {
- content: "\f41e";
-}
-
-.fa-wirsindhandwerk:before {
- content: "\e2d0";
-}
-
-.fa-wsh:before {
- content: "\e2d0";
-}
-
-.fa-buromobelexperte:before {
- content: "\f37f";
-}
-
-.fa-salesforce:before {
- content: "\f83b";
-}
-
-.fa-octopus-deploy:before {
- content: "\e082";
-}
-
-.fa-medapps:before {
- content: "\f3c6";
-}
-
-.fa-ns8:before {
- content: "\f3d5";
-}
-
-.fa-pinterest-p:before {
- content: "\f231";
-}
-
-.fa-apper:before {
- content: "\f371";
-}
-
-.fa-fort-awesome:before {
- content: "\f286";
-}
-
-.fa-waze:before {
- content: "\f83f";
-}
-
-.fa-cc-jcb:before {
- content: "\f24b";
-}
-
-.fa-snapchat:before {
- content: "\f2ab";
-}
-
-.fa-snapchat-ghost:before {
- content: "\f2ab";
-}
-
-.fa-fantasy-flight-games:before {
- content: "\f6dc";
-}
-
-.fa-rust:before {
- content: "\e07a";
-}
-
-.fa-wix:before {
- content: "\f5cf";
-}
-
-.fa-square-behance:before {
- content: "\f1b5";
-}
-
-.fa-behance-square:before {
- content: "\f1b5";
-}
-
-.fa-supple:before {
- content: "\f3f9";
-}
-
-.fa-rebel:before {
- content: "\f1d0";
-}
-
-.fa-css3:before {
- content: "\f13c";
-}
-
-.fa-staylinked:before {
- content: "\f3f5";
-}
-
-.fa-kaggle:before {
- content: "\f5fa";
-}
-
-.fa-space-awesome:before {
- content: "\e5ac";
-}
-
-.fa-deviantart:before {
- content: "\f1bd";
-}
-
-.fa-cpanel:before {
- content: "\f388";
-}
-
-.fa-goodreads-g:before {
- content: "\f3a9";
-}
-
-.fa-square-git:before {
- content: "\f1d2";
-}
-
-.fa-git-square:before {
- content: "\f1d2";
-}
-
-.fa-square-tumblr:before {
- content: "\f174";
-}
-
-.fa-tumblr-square:before {
- content: "\f174";
-}
-
-.fa-trello:before {
- content: "\f181";
-}
-
-.fa-creative-commons-nc-jp:before {
- content: "\f4ea";
-}
-
-.fa-get-pocket:before {
- content: "\f265";
-}
-
-.fa-perbyte:before {
- content: "\e083";
-}
-
-.fa-grunt:before {
- content: "\f3ad";
-}
-
-.fa-weebly:before {
- content: "\f5cc";
-}
-
-.fa-connectdevelop:before {
- content: "\f20e";
-}
-
-.fa-leanpub:before {
- content: "\f212";
-}
-
-.fa-black-tie:before {
- content: "\f27e";
-}
-
-.fa-themeco:before {
- content: "\f5c6";
-}
-
-.fa-python:before {
- content: "\f3e2";
-}
-
-.fa-android:before {
- content: "\f17b";
-}
-
-.fa-bots:before {
- content: "\e340";
-}
-
-.fa-free-code-camp:before {
- content: "\f2c5";
-}
-
-.fa-hornbill:before {
- content: "\f592";
-}
-
-.fa-js:before {
- content: "\f3b8";
-}
-
-.fa-ideal:before {
- content: "\e013";
-}
-
-.fa-git:before {
- content: "\f1d3";
-}
-
-.fa-dev:before {
- content: "\f6cc";
-}
-
-.fa-sketch:before {
- content: "\f7c6";
-}
-
-.fa-yandex-international:before {
- content: "\f414";
-}
-
-.fa-cc-amex:before {
- content: "\f1f3";
-}
-
-.fa-uber:before {
- content: "\f402";
-}
-
-.fa-github:before {
- content: "\f09b";
-}
-
-.fa-php:before {
- content: "\f457";
-}
-
-.fa-alipay:before {
- content: "\f642";
-}
-
-.fa-youtube:before {
- content: "\f167";
-}
-
-.fa-skyatlas:before {
- content: "\f216";
-}
-
-.fa-firefox-browser:before {
- content: "\e007";
-}
-
-.fa-replyd:before {
- content: "\f3e6";
-}
-
-.fa-suse:before {
- content: "\f7d6";
-}
-
-.fa-jenkins:before {
- content: "\f3b6";
-}
-
-.fa-twitter:before {
- content: "\f099";
-}
-
-.fa-rockrms:before {
- content: "\f3e9";
-}
-
-.fa-pinterest:before {
- content: "\f0d2";
-}
-
-.fa-buffer:before {
- content: "\f837";
-}
-
-.fa-npm:before {
- content: "\f3d4";
-}
-
-.fa-yammer:before {
- content: "\f840";
-}
-
-.fa-btc:before {
- content: "\f15a";
-}
-
-.fa-dribbble:before {
- content: "\f17d";
-}
-
-.fa-stumbleupon-circle:before {
- content: "\f1a3";
-}
-
-.fa-internet-explorer:before {
- content: "\f26b";
-}
-
-.fa-stubber:before {
- content: "\e5c7";
-}
-
-.fa-telegram:before {
- content: "\f2c6";
-}
-
-.fa-telegram-plane:before {
- content: "\f2c6";
-}
-
-.fa-old-republic:before {
- content: "\f510";
-}
-
-.fa-odysee:before {
- content: "\e5c6";
-}
-
-.fa-square-whatsapp:before {
- content: "\f40c";
-}
-
-.fa-whatsapp-square:before {
- content: "\f40c";
-}
-
-.fa-node-js:before {
- content: "\f3d3";
-}
-
-.fa-edge-legacy:before {
- content: "\e078";
-}
-
-.fa-slack:before {
- content: "\f198";
-}
-
-.fa-slack-hash:before {
- content: "\f198";
-}
-
-.fa-medrt:before {
- content: "\f3c8";
-}
-
-.fa-usb:before {
- content: "\f287";
-}
-
-.fa-tumblr:before {
- content: "\f173";
-}
-
-.fa-vaadin:before {
- content: "\f408";
-}
-
-.fa-quora:before {
- content: "\f2c4";
-}
-
-.fa-reacteurope:before {
- content: "\f75d";
-}
-
-.fa-medium:before {
- content: "\f23a";
-}
-
-.fa-medium-m:before {
- content: "\f23a";
-}
-
-.fa-amilia:before {
- content: "\f36d";
-}
-
-.fa-mixcloud:before {
- content: "\f289";
-}
-
-.fa-flipboard:before {
- content: "\f44d";
-}
-
-.fa-viacoin:before {
- content: "\f237";
-}
-
-.fa-critical-role:before {
- content: "\f6c9";
-}
-
-.fa-sitrox:before {
- content: "\e44a";
-}
-
-.fa-discourse:before {
- content: "\f393";
-}
-
-.fa-joomla:before {
- content: "\f1aa";
-}
-
-.fa-mastodon:before {
- content: "\f4f6";
-}
-
-.fa-airbnb:before {
- content: "\f834";
-}
-
-.fa-wolf-pack-battalion:before {
- content: "\f514";
-}
-
-.fa-buy-n-large:before {
- content: "\f8a6";
-}
-
-.fa-gulp:before {
- content: "\f3ae";
-}
-
-.fa-creative-commons-sampling-plus:before {
- content: "\f4f1";
-}
-
-.fa-strava:before {
- content: "\f428";
-}
-
-.fa-ember:before {
- content: "\f423";
-}
-
-.fa-canadian-maple-leaf:before {
- content: "\f785";
-}
-
-.fa-teamspeak:before {
- content: "\f4f9";
-}
-
-.fa-pushed:before {
- content: "\f3e1";
-}
-
-.fa-wordpress-simple:before {
- content: "\f411";
-}
-
-.fa-nutritionix:before {
- content: "\f3d6";
-}
-
-.fa-wodu:before {
- content: "\e088";
-}
-
-.fa-google-pay:before {
- content: "\e079";
-}
-
-.fa-intercom:before {
- content: "\f7af";
-}
-
-.fa-zhihu:before {
- content: "\f63f";
-}
-
-.fa-korvue:before {
- content: "\f42f";
-}
-
-.fa-pix:before {
- content: "\e43a";
-}
-
-.fa-steam-symbol:before {
- content: "\f3f6";
-}
diff --git a/static/fonts/font-awesome/fontawesome.css b/static/fonts/font-awesome/fontawesome.css
deleted file mode 100644
index e6d74b3a8..000000000
--- a/static/fonts/font-awesome/fontawesome.css
+++ /dev/null
@@ -1,17312 +0,0 @@
-/*!
- * Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
- * License - https://fontawesome.com/license (Commercial License)
- * Copyright 2022 Fonticons, Inc.
- */
-.fa {
- font-family: var(--fa-style-family, "Font Awesome 6 Pro");
- font-weight: var(--fa-style, 900);
-}
-
-.fa,
-.fa-classic,
-.fa-sharp,
-.fas,
-.fa-solid,
-.far,
-.fa-regular,
-.fal,
-.fa-light,
-.fat,
-.fa-thin,
-.fad,
-.fa-duotone,
-.fass,
-.fa-sharp-solid,
-.fab,
-.fa-brands {
- -moz-osx-font-smoothing: grayscale;
- -webkit-font-smoothing: antialiased;
- display: var(--fa-display, inline-block);
- font-style: normal;
- font-variant: normal;
- line-height: 1;
- text-rendering: auto;
-}
-
-.fas,
-.fa-classic,
-.fa-solid,
-.far,
-.fa-regular,
-.fal,
-.fa-light,
-.fat,
-.fa-thin {
- font-family: "Font Awesome 6 Pro";
-}
-
-.fab,
-.fa-brands {
- font-family: "Font Awesome 6 Brands";
-}
-
-.fad,
-.fa-classic.fa-duotone,
-.fa-duotone {
- font-family: "Font Awesome 6 Duotone";
-}
-
-.fass,
-.fa-sharp {
- font-family: "Font Awesome 6 Sharp";
- font-weight: 900;
-}
-
-.fa-1x {
- font-size: 1em;
-}
-
-.fa-2x {
- font-size: 2em;
-}
-
-.fa-3x {
- font-size: 3em;
-}
-
-.fa-4x {
- font-size: 4em;
-}
-
-.fa-5x {
- font-size: 5em;
-}
-
-.fa-6x {
- font-size: 6em;
-}
-
-.fa-7x {
- font-size: 7em;
-}
-
-.fa-8x {
- font-size: 8em;
-}
-
-.fa-9x {
- font-size: 9em;
-}
-
-.fa-10x {
- font-size: 10em;
-}
-
-.fa-2xs {
- font-size: 0.625em;
- line-height: 0.1em;
- vertical-align: 0.225em;
-}
-
-.fa-xs {
- font-size: 0.75em;
- line-height: 0.08333em;
- vertical-align: 0.125em;
-}
-
-.fa-sm {
- font-size: 0.875em;
- line-height: 0.07143em;
- vertical-align: 0.05357em;
-}
-
-.fa-lg {
- font-size: 1.25em;
- line-height: 0.05em;
- vertical-align: -0.075em;
-}
-
-.fa-xl {
- font-size: 1.5em;
- line-height: 0.04167em;
- vertical-align: -0.125em;
-}
-
-.fa-2xl {
- font-size: 2em;
- line-height: 0.03125em;
- vertical-align: -0.1875em;
-}
-
-.fa-fw {
- text-align: center;
- width: 1.25em;
-}
-
-.fa-ul {
- list-style-type: none;
- margin-left: var(--fa-li-margin, 2.5em);
- padding-left: 0;
-}
-.fa-ul > li {
- position: relative;
-}
-
-.fa-li {
- left: calc(var(--fa-li-width, 2em) * -1);
- position: absolute;
- text-align: center;
- width: var(--fa-li-width, 2em);
- line-height: inherit;
-}
-
-.fa-border {
- border-color: var(--fa-border-color, #eee);
- border-radius: var(--fa-border-radius, 0.1em);
- border-style: var(--fa-border-style, solid);
- border-width: var(--fa-border-width, 0.08em);
- padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);
-}
-
-.fa-pull-left {
- float: left;
- margin-right: var(--fa-pull-margin, 0.3em);
-}
-
-.fa-pull-right {
- float: right;
- margin-left: var(--fa-pull-margin, 0.3em);
-}
-
-.fa-beat {
- -webkit-animation-name: fa-beat;
- animation-name: fa-beat;
- -webkit-animation-delay: var(--fa-animation-delay, 0s);
- animation-delay: var(--fa-animation-delay, 0s);
- -webkit-animation-direction: var(--fa-animation-direction, normal);
- animation-direction: var(--fa-animation-direction, normal);
- -webkit-animation-duration: var(--fa-animation-duration, 1s);
- animation-duration: var(--fa-animation-duration, 1s);
- -webkit-animation-iteration-count: var(
- --fa-animation-iteration-count,
- infinite
- );
- animation-iteration-count: var(--fa-animation-iteration-count, infinite);
- -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
- animation-timing-function: var(--fa-animation-timing, ease-in-out);
-}
-
-.fa-bounce {
- -webkit-animation-name: fa-bounce;
- animation-name: fa-bounce;
- -webkit-animation-delay: var(--fa-animation-delay, 0s);
- animation-delay: var(--fa-animation-delay, 0s);
- -webkit-animation-direction: var(--fa-animation-direction, normal);
- animation-direction: var(--fa-animation-direction, normal);
- -webkit-animation-duration: var(--fa-animation-duration, 1s);
- animation-duration: var(--fa-animation-duration, 1s);
- -webkit-animation-iteration-count: var(
- --fa-animation-iteration-count,
- infinite
- );
- animation-iteration-count: var(--fa-animation-iteration-count, infinite);
- -webkit-animation-timing-function: var(
- --fa-animation-timing,
- cubic-bezier(0.28, 0.84, 0.42, 1)
- );
- animation-timing-function: var(
- --fa-animation-timing,
- cubic-bezier(0.28, 0.84, 0.42, 1)
- );
-}
-
-.fa-fade {
- -webkit-animation-name: fa-fade;
- animation-name: fa-fade;
- -webkit-animation-delay: var(--fa-animation-delay, 0s);
- animation-delay: var(--fa-animation-delay, 0s);
- -webkit-animation-direction: var(--fa-animation-direction, normal);
- animation-direction: var(--fa-animation-direction, normal);
- -webkit-animation-duration: var(--fa-animation-duration, 1s);
- animation-duration: var(--fa-animation-duration, 1s);
- -webkit-animation-iteration-count: var(
- --fa-animation-iteration-count,
- infinite
- );
- animation-iteration-count: var(--fa-animation-iteration-count, infinite);
- -webkit-animation-timing-function: var(
- --fa-animation-timing,
- cubic-bezier(0.4, 0, 0.6, 1)
- );
- animation-timing-function: var(
- --fa-animation-timing,
- cubic-bezier(0.4, 0, 0.6, 1)
- );
-}
-
-.fa-beat-fade {
- -webkit-animation-name: fa-beat-fade;
- animation-name: fa-beat-fade;
- -webkit-animation-delay: var(--fa-animation-delay, 0s);
- animation-delay: var(--fa-animation-delay, 0s);
- -webkit-animation-direction: var(--fa-animation-direction, normal);
- animation-direction: var(--fa-animation-direction, normal);
- -webkit-animation-duration: var(--fa-animation-duration, 1s);
- animation-duration: var(--fa-animation-duration, 1s);
- -webkit-animation-iteration-count: var(
- --fa-animation-iteration-count,
- infinite
- );
- animation-iteration-count: var(--fa-animation-iteration-count, infinite);
- -webkit-animation-timing-function: var(
- --fa-animation-timing,
- cubic-bezier(0.4, 0, 0.6, 1)
- );
- animation-timing-function: var(
- --fa-animation-timing,
- cubic-bezier(0.4, 0, 0.6, 1)
- );
-}
-
-.fa-flip {
- -webkit-animation-name: fa-flip;
- animation-name: fa-flip;
- -webkit-animation-delay: var(--fa-animation-delay, 0s);
- animation-delay: var(--fa-animation-delay, 0s);
- -webkit-animation-direction: var(--fa-animation-direction, normal);
- animation-direction: var(--fa-animation-direction, normal);
- -webkit-animation-duration: var(--fa-animation-duration, 1s);
- animation-duration: var(--fa-animation-duration, 1s);
- -webkit-animation-iteration-count: var(
- --fa-animation-iteration-count,
- infinite
- );
- animation-iteration-count: var(--fa-animation-iteration-count, infinite);
- -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
- animation-timing-function: var(--fa-animation-timing, ease-in-out);
-}
-
-.fa-shake {
- -webkit-animation-name: fa-shake;
- animation-name: fa-shake;
- -webkit-animation-delay: var(--fa-animation-delay, 0s);
- animation-delay: var(--fa-animation-delay, 0s);
- -webkit-animation-direction: var(--fa-animation-direction, normal);
- animation-direction: var(--fa-animation-direction, normal);
- -webkit-animation-duration: var(--fa-animation-duration, 1s);
- animation-duration: var(--fa-animation-duration, 1s);
- -webkit-animation-iteration-count: var(
- --fa-animation-iteration-count,
- infinite
- );
- animation-iteration-count: var(--fa-animation-iteration-count, infinite);
- -webkit-animation-timing-function: var(--fa-animation-timing, linear);
- animation-timing-function: var(--fa-animation-timing, linear);
-}
-
-.fa-spin {
- -webkit-animation-name: fa-spin;
- animation-name: fa-spin;
- -webkit-animation-delay: var(--fa-animation-delay, 0s);
- animation-delay: var(--fa-animation-delay, 0s);
- -webkit-animation-direction: var(--fa-animation-direction, normal);
- animation-direction: var(--fa-animation-direction, normal);
- -webkit-animation-duration: var(--fa-animation-duration, 2s);
- animation-duration: var(--fa-animation-duration, 2s);
- -webkit-animation-iteration-count: var(
- --fa-animation-iteration-count,
- infinite
- );
- animation-iteration-count: var(--fa-animation-iteration-count, infinite);
- -webkit-animation-timing-function: var(--fa-animation-timing, linear);
- animation-timing-function: var(--fa-animation-timing, linear);
-}
-
-.fa-spin-reverse {
- --fa-animation-direction: reverse;
-}
-
-.fa-pulse,
-.fa-spin-pulse {
- -webkit-animation-name: fa-spin;
- animation-name: fa-spin;
- -webkit-animation-direction: var(--fa-animation-direction, normal);
- animation-direction: var(--fa-animation-direction, normal);
- -webkit-animation-duration: var(--fa-animation-duration, 1s);
- animation-duration: var(--fa-animation-duration, 1s);
- -webkit-animation-iteration-count: var(
- --fa-animation-iteration-count,
- infinite
- );
- animation-iteration-count: var(--fa-animation-iteration-count, infinite);
- -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));
- animation-timing-function: var(--fa-animation-timing, steps(8));
-}
-
-@media (prefers-reduced-motion: reduce) {
- .fa-beat,
- .fa-bounce,
- .fa-fade,
- .fa-beat-fade,
- .fa-flip,
- .fa-pulse,
- .fa-shake,
- .fa-spin,
- .fa-spin-pulse {
- -webkit-animation-delay: -1ms;
- animation-delay: -1ms;
- -webkit-animation-duration: 1ms;
- animation-duration: 1ms;
- -webkit-animation-iteration-count: 1;
- animation-iteration-count: 1;
- transition-delay: 0s;
- transition-duration: 0s;
- }
-}
-
-@-webkit-keyframes fa-beat {
- 0%,
- 90% {
- -webkit-transform: scale(1);
- transform: scale(1);
- }
- 45% {
- -webkit-transform: scale(var(--fa-beat-scale, 1.25));
- transform: scale(var(--fa-beat-scale, 1.25));
- }
-}
-
-@keyframes fa-beat {
- 0%,
- 90% {
- -webkit-transform: scale(1);
- transform: scale(1);
- }
- 45% {
- -webkit-transform: scale(var(--fa-beat-scale, 1.25));
- transform: scale(var(--fa-beat-scale, 1.25));
- }
-}
-
-@-webkit-keyframes fa-bounce {
- 0% {
- -webkit-transform: scale(1, 1) translateY(0);
- transform: scale(1, 1) translateY(0);
- }
- 10% {
- -webkit-transform: scale(
- var(--fa-bounce-start-scale-x, 1.1),
- var(--fa-bounce-start-scale-y, 0.9)
- )
- translateY(0);
- transform: scale(
- var(--fa-bounce-start-scale-x, 1.1),
- var(--fa-bounce-start-scale-y, 0.9)
- )
- translateY(0);
- }
- 30% {
- -webkit-transform: scale(
- var(--fa-bounce-jump-scale-x, 0.9),
- var(--fa-bounce-jump-scale-y, 1.1)
- )
- translateY(var(--fa-bounce-height, -0.5em));
- transform: scale(
- var(--fa-bounce-jump-scale-x, 0.9),
- var(--fa-bounce-jump-scale-y, 1.1)
- )
- translateY(var(--fa-bounce-height, -0.5em));
- }
- 50% {
- -webkit-transform: scale(
- var(--fa-bounce-land-scale-x, 1.05),
- var(--fa-bounce-land-scale-y, 0.95)
- )
- translateY(0);
- transform: scale(
- var(--fa-bounce-land-scale-x, 1.05),
- var(--fa-bounce-land-scale-y, 0.95)
- )
- translateY(0);
- }
- 57% {
- -webkit-transform: scale(1, 1)
- translateY(var(--fa-bounce-rebound, -0.125em));
- transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
- }
- 64% {
- -webkit-transform: scale(1, 1) translateY(0);
- transform: scale(1, 1) translateY(0);
- }
- 100% {
- -webkit-transform: scale(1, 1) translateY(0);
- transform: scale(1, 1) translateY(0);
- }
-}
-
-@keyframes fa-bounce {
- 0% {
- -webkit-transform: scale(1, 1) translateY(0);
- transform: scale(1, 1) translateY(0);
- }
- 10% {
- -webkit-transform: scale(
- var(--fa-bounce-start-scale-x, 1.1),
- var(--fa-bounce-start-scale-y, 0.9)
- )
- translateY(0);
- transform: scale(
- var(--fa-bounce-start-scale-x, 1.1),
- var(--fa-bounce-start-scale-y, 0.9)
- )
- translateY(0);
- }
- 30% {
- -webkit-transform: scale(
- var(--fa-bounce-jump-scale-x, 0.9),
- var(--fa-bounce-jump-scale-y, 1.1)
- )
- translateY(var(--fa-bounce-height, -0.5em));
- transform: scale(
- var(--fa-bounce-jump-scale-x, 0.9),
- var(--fa-bounce-jump-scale-y, 1.1)
- )
- translateY(var(--fa-bounce-height, -0.5em));
- }
- 50% {
- -webkit-transform: scale(
- var(--fa-bounce-land-scale-x, 1.05),
- var(--fa-bounce-land-scale-y, 0.95)
- )
- translateY(0);
- transform: scale(
- var(--fa-bounce-land-scale-x, 1.05),
- var(--fa-bounce-land-scale-y, 0.95)
- )
- translateY(0);
- }
- 57% {
- -webkit-transform: scale(1, 1)
- translateY(var(--fa-bounce-rebound, -0.125em));
- transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
- }
- 64% {
- -webkit-transform: scale(1, 1) translateY(0);
- transform: scale(1, 1) translateY(0);
- }
- 100% {
- -webkit-transform: scale(1, 1) translateY(0);
- transform: scale(1, 1) translateY(0);
- }
-}
-
-@-webkit-keyframes fa-fade {
- 50% {
- opacity: var(--fa-fade-opacity, 0.4);
- }
-}
-
-@keyframes fa-fade {
- 50% {
- opacity: var(--fa-fade-opacity, 0.4);
- }
-}
-
-@-webkit-keyframes fa-beat-fade {
- 0%,
- 100% {
- opacity: var(--fa-beat-fade-opacity, 0.4);
- -webkit-transform: scale(1);
- transform: scale(1);
- }
- 50% {
- opacity: 1;
- -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
- transform: scale(var(--fa-beat-fade-scale, 1.125));
- }
-}
-
-@keyframes fa-beat-fade {
- 0%,
- 100% {
- opacity: var(--fa-beat-fade-opacity, 0.4);
- -webkit-transform: scale(1);
- transform: scale(1);
- }
- 50% {
- opacity: 1;
- -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
- transform: scale(var(--fa-beat-fade-scale, 1.125));
- }
-}
-
-@-webkit-keyframes fa-flip {
- 50% {
- -webkit-transform: rotate3d(
- var(--fa-flip-x, 0),
- var(--fa-flip-y, 1),
- var(--fa-flip-z, 0),
- var(--fa-flip-angle, -180deg)
- );
- transform: rotate3d(
- var(--fa-flip-x, 0),
- var(--fa-flip-y, 1),
- var(--fa-flip-z, 0),
- var(--fa-flip-angle, -180deg)
- );
- }
-}
-
-@keyframes fa-flip {
- 50% {
- -webkit-transform: rotate3d(
- var(--fa-flip-x, 0),
- var(--fa-flip-y, 1),
- var(--fa-flip-z, 0),
- var(--fa-flip-angle, -180deg)
- );
- transform: rotate3d(
- var(--fa-flip-x, 0),
- var(--fa-flip-y, 1),
- var(--fa-flip-z, 0),
- var(--fa-flip-angle, -180deg)
- );
- }
-}
-
-@-webkit-keyframes fa-shake {
- 0% {
- -webkit-transform: rotate(-15deg);
- transform: rotate(-15deg);
- }
- 4% {
- -webkit-transform: rotate(15deg);
- transform: rotate(15deg);
- }
- 8%,
- 24% {
- -webkit-transform: rotate(-18deg);
- transform: rotate(-18deg);
- }
- 12%,
- 28% {
- -webkit-transform: rotate(18deg);
- transform: rotate(18deg);
- }
- 16% {
- -webkit-transform: rotate(-22deg);
- transform: rotate(-22deg);
- }
- 20% {
- -webkit-transform: rotate(22deg);
- transform: rotate(22deg);
- }
- 32% {
- -webkit-transform: rotate(-12deg);
- transform: rotate(-12deg);
- }
- 36% {
- -webkit-transform: rotate(12deg);
- transform: rotate(12deg);
- }
- 40%,
- 100% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
-}
-
-@keyframes fa-shake {
- 0% {
- -webkit-transform: rotate(-15deg);
- transform: rotate(-15deg);
- }
- 4% {
- -webkit-transform: rotate(15deg);
- transform: rotate(15deg);
- }
- 8%,
- 24% {
- -webkit-transform: rotate(-18deg);
- transform: rotate(-18deg);
- }
- 12%,
- 28% {
- -webkit-transform: rotate(18deg);
- transform: rotate(18deg);
- }
- 16% {
- -webkit-transform: rotate(-22deg);
- transform: rotate(-22deg);
- }
- 20% {
- -webkit-transform: rotate(22deg);
- transform: rotate(22deg);
- }
- 32% {
- -webkit-transform: rotate(-12deg);
- transform: rotate(-12deg);
- }
- 36% {
- -webkit-transform: rotate(12deg);
- transform: rotate(12deg);
- }
- 40%,
- 100% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
-}
-
-@-webkit-keyframes fa-spin {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
-}
-
-@keyframes fa-spin {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
-}
-
-.fa-rotate-90 {
- -webkit-transform: rotate(90deg);
- transform: rotate(90deg);
-}
-
-.fa-rotate-180 {
- -webkit-transform: rotate(180deg);
- transform: rotate(180deg);
-}
-
-.fa-rotate-270 {
- -webkit-transform: rotate(270deg);
- transform: rotate(270deg);
-}
-
-.fa-flip-horizontal {
- -webkit-transform: scale(-1, 1);
- transform: scale(-1, 1);
-}
-
-.fa-flip-vertical {
- -webkit-transform: scale(1, -1);
- transform: scale(1, -1);
-}
-
-.fa-flip-both,
-.fa-flip-horizontal.fa-flip-vertical {
- -webkit-transform: scale(-1, -1);
- transform: scale(-1, -1);
-}
-
-.fa-rotate-by {
- -webkit-transform: rotate(var(--fa-rotate-angle, none));
- transform: rotate(var(--fa-rotate-angle, none));
-}
-
-.fa-stack {
- display: inline-block;
- height: 2em;
- line-height: 2em;
- position: relative;
- vertical-align: middle;
- width: 2.5em;
-}
-
-.fa-stack-1x,
-.fa-stack-2x {
- left: 0;
- position: absolute;
- text-align: center;
- width: 100%;
- z-index: var(--fa-stack-z-index, auto);
-}
-
-.fa-stack-1x {
- line-height: inherit;
-}
-
-.fa-stack-2x {
- font-size: 2em;
-}
-
-.fa-inverse {
- color: var(--fa-inverse, #fff);
-}
-
-/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
-readers do not read off random characters that represent icons */
-.fa-0::before {
- content: "\30";
-}
-
-.fa-1::before {
- content: "\31";
-}
-
-.fa-2::before {
- content: "\32";
-}
-
-.fa-3::before {
- content: "\33";
-}
-
-.fa-4::before {
- content: "\34";
-}
-
-.fa-5::before {
- content: "\35";
-}
-
-.fa-6::before {
- content: "\36";
-}
-
-.fa-7::before {
- content: "\37";
-}
-
-.fa-8::before {
- content: "\38";
-}
-
-.fa-9::before {
- content: "\39";
-}
-
-.fa-fill-drip::before {
- content: "\f576";
-}
-
-.fa-arrows-to-circle::before {
- content: "\e4bd";
-}
-
-.fa-circle-chevron-right::before {
- content: "\f138";
-}
-
-.fa-chevron-circle-right::before {
- content: "\f138";
-}
-
-.fa-wagon-covered::before {
- content: "\f8ee";
-}
-
-.fa-line-height::before {
- content: "\f871";
-}
-
-.fa-bagel::before {
- content: "\e3d7";
-}
-
-.fa-transporter-7::before {
- content: "\e2a8";
-}
-
-.fa-at::before {
- content: "\40";
-}
-
-.fa-rectangles-mixed::before {
- content: "\e323";
-}
-
-.fa-phone-arrow-up-right::before {
- content: "\e224";
-}
-
-.fa-phone-arrow-up::before {
- content: "\e224";
-}
-
-.fa-phone-outgoing::before {
- content: "\e224";
-}
-
-.fa-trash-can::before {
- content: "\f2ed";
-}
-
-.fa-trash-alt::before {
- content: "\f2ed";
-}
-
-.fa-circle-l::before {
- content: "\e114";
-}
-
-.fa-head-side-goggles::before {
- content: "\f6ea";
-}
-
-.fa-head-vr::before {
- content: "\f6ea";
-}
-
-.fa-text-height::before {
- content: "\f034";
-}
-
-.fa-user-xmark::before {
- content: "\f235";
-}
-
-.fa-user-times::before {
- content: "\f235";
-}
-
-.fa-face-hand-yawn::before {
- content: "\e379";
-}
-
-.fa-gauge-simple-min::before {
- content: "\f62d";
-}
-
-.fa-tachometer-slowest::before {
- content: "\f62d";
-}
-
-.fa-stethoscope::before {
- content: "\f0f1";
-}
-
-.fa-coffin::before {
- content: "\f6c6";
-}
-
-.fa-message::before {
- content: "\f27a";
-}
-
-.fa-comment-alt::before {
- content: "\f27a";
-}
-
-.fa-salad::before {
- content: "\f81e";
-}
-
-.fa-bowl-salad::before {
- content: "\f81e";
-}
-
-.fa-info::before {
- content: "\f129";
-}
-
-.fa-robot-astromech::before {
- content: "\e2d2";
-}
-
-.fa-ring-diamond::before {
- content: "\e5ab";
-}
-
-.fa-fondue-pot::before {
- content: "\e40d";
-}
-
-.fa-theta::before {
- content: "\f69e";
-}
-
-.fa-face-hand-peeking::before {
- content: "\e481";
-}
-
-.fa-square-user::before {
- content: "\e283";
-}
-
-.fa-down-left-and-up-right-to-center::before {
- content: "\f422";
-}
-
-.fa-compress-alt::before {
- content: "\f422";
-}
-
-.fa-explosion::before {
- content: "\e4e9";
-}
-
-.fa-file-lines::before {
- content: "\f15c";
-}
-
-.fa-file-alt::before {
- content: "\f15c";
-}
-
-.fa-file-text::before {
- content: "\f15c";
-}
-
-.fa-wave-square::before {
- content: "\f83e";
-}
-
-.fa-ring::before {
- content: "\f70b";
-}
-
-.fa-building-un::before {
- content: "\e4d9";
-}
-
-.fa-dice-three::before {
- content: "\f527";
-}
-
-.fa-tire-pressure-warning::before {
- content: "\f633";
-}
-
-.fa-wifi-fair::before {
- content: "\f6ab";
-}
-
-.fa-wifi-2::before {
- content: "\f6ab";
-}
-
-.fa-calendar-days::before {
- content: "\f073";
-}
-
-.fa-calendar-alt::before {
- content: "\f073";
-}
-
-.fa-mp3-player::before {
- content: "\f8ce";
-}
-
-.fa-anchor-circle-check::before {
- content: "\e4aa";
-}
-
-.fa-tally-4::before {
- content: "\e297";
-}
-
-.fa-rectangle-history::before {
- content: "\e4a2";
-}
-
-.fa-building-circle-arrow-right::before {
- content: "\e4d1";
-}
-
-.fa-volleyball::before {
- content: "\f45f";
-}
-
-.fa-volleyball-ball::before {
- content: "\f45f";
-}
-
-.fa-sun-haze::before {
- content: "\f765";
-}
-
-.fa-text-size::before {
- content: "\f894";
-}
-
-.fa-ufo::before {
- content: "\e047";
-}
-
-.fa-fork::before {
- content: "\f2e3";
-}
-
-.fa-utensil-fork::before {
- content: "\f2e3";
-}
-
-.fa-arrows-up-to-line::before {
- content: "\e4c2";
-}
-
-.fa-mobile-signal::before {
- content: "\e1ef";
-}
-
-.fa-barcode-scan::before {
- content: "\f465";
-}
-
-.fa-sort-down::before {
- content: "\f0dd";
-}
-
-.fa-sort-desc::before {
- content: "\f0dd";
-}
-
-.fa-folder-arrow-down::before {
- content: "\e053";
-}
-
-.fa-folder-download::before {
- content: "\e053";
-}
-
-.fa-circle-minus::before {
- content: "\f056";
-}
-
-.fa-minus-circle::before {
- content: "\f056";
-}
-
-.fa-face-icicles::before {
- content: "\e37c";
-}
-
-.fa-shovel::before {
- content: "\f713";
-}
-
-.fa-door-open::before {
- content: "\f52b";
-}
-
-.fa-films::before {
- content: "\e17a";
-}
-
-.fa-right-from-bracket::before {
- content: "\f2f5";
-}
-
-.fa-sign-out-alt::before {
- content: "\f2f5";
-}
-
-.fa-face-glasses::before {
- content: "\e377";
-}
-
-.fa-nfc::before {
- content: "\e1f7";
-}
-
-.fa-atom::before {
- content: "\f5d2";
-}
-
-.fa-soap::before {
- content: "\e06e";
-}
-
-.fa-icons::before {
- content: "\f86d";
-}
-
-.fa-heart-music-camera-bolt::before {
- content: "\f86d";
-}
-
-.fa-microphone-lines-slash::before {
- content: "\f539";
-}
-
-.fa-microphone-alt-slash::before {
- content: "\f539";
-}
-
-.fa-closed-captioning-slash::before {
- content: "\e135";
-}
-
-.fa-calculator-simple::before {
- content: "\f64c";
-}
-
-.fa-calculator-alt::before {
- content: "\f64c";
-}
-
-.fa-bridge-circle-check::before {
- content: "\e4c9";
-}
-
-.fa-sliders-up::before {
- content: "\f3f1";
-}
-
-.fa-sliders-v::before {
- content: "\f3f1";
-}
-
-.fa-location-minus::before {
- content: "\f609";
-}
-
-.fa-map-marker-minus::before {
- content: "\f609";
-}
-
-.fa-pump-medical::before {
- content: "\e06a";
-}
-
-.fa-fingerprint::before {
- content: "\f577";
-}
-
-.fa-ski-boot::before {
- content: "\e3cc";
-}
-
-.fa-standard-definition::before {
- content: "\e28a";
-}
-
-.fa-rectangle-sd::before {
- content: "\e28a";
-}
-
-.fa-h1::before {
- content: "\f313";
-}
-
-.fa-hand-point-right::before {
- content: "\f0a4";
-}
-
-.fa-magnifying-glass-location::before {
- content: "\f689";
-}
-
-.fa-search-location::before {
- content: "\f689";
-}
-
-.fa-message-bot::before {
- content: "\e3b8";
-}
-
-.fa-forward-step::before {
- content: "\f051";
-}
-
-.fa-step-forward::before {
- content: "\f051";
-}
-
-.fa-face-smile-beam::before {
- content: "\f5b8";
-}
-
-.fa-smile-beam::before {
- content: "\f5b8";
-}
-
-.fa-light-ceiling::before {
- content: "\e016";
-}
-
-.fa-message-exclamation::before {
- content: "\f4a5";
-}
-
-.fa-comment-alt-exclamation::before {
- content: "\f4a5";
-}
-
-.fa-bowl-scoop::before {
- content: "\e3de";
-}
-
-.fa-bowl-shaved-ice::before {
- content: "\e3de";
-}
-
-.fa-square-x::before {
- content: "\e286";
-}
-
-.fa-utility-pole-double::before {
- content: "\e2c4";
-}
-
-.fa-flag-checkered::before {
- content: "\f11e";
-}
-
-.fa-chevrons-up::before {
- content: "\f325";
-}
-
-.fa-chevron-double-up::before {
- content: "\f325";
-}
-
-.fa-football::before {
- content: "\f44e";
-}
-
-.fa-football-ball::before {
- content: "\f44e";
-}
-
-.fa-user-vneck::before {
- content: "\e461";
-}
-
-.fa-school-circle-exclamation::before {
- content: "\e56c";
-}
-
-.fa-crop::before {
- content: "\f125";
-}
-
-.fa-angles-down::before {
- content: "\f103";
-}
-
-.fa-angle-double-down::before {
- content: "\f103";
-}
-
-.fa-users-rectangle::before {
- content: "\e594";
-}
-
-.fa-people-roof::before {
- content: "\e537";
-}
-
-.fa-square-arrow-right::before {
- content: "\f33b";
-}
-
-.fa-arrow-square-right::before {
- content: "\f33b";
-}
-
-.fa-location-plus::before {
- content: "\f60a";
-}
-
-.fa-map-marker-plus::before {
- content: "\f60a";
-}
-
-.fa-lightbulb-exclamation-on::before {
- content: "\e1ca";
-}
-
-.fa-people-line::before {
- content: "\e534";
-}
-
-.fa-beer-mug-empty::before {
- content: "\f0fc";
-}
-
-.fa-beer::before {
- content: "\f0fc";
-}
-
-.fa-crate-empty::before {
- content: "\e151";
-}
-
-.fa-diagram-predecessor::before {
- content: "\e477";
-}
-
-.fa-transporter::before {
- content: "\e042";
-}
-
-.fa-calendar-circle-user::before {
- content: "\e471";
-}
-
-.fa-arrow-up-long::before {
- content: "\f176";
-}
-
-.fa-long-arrow-up::before {
- content: "\f176";
-}
-
-.fa-person-carry-box::before {
- content: "\f4cf";
-}
-
-.fa-person-carry::before {
- content: "\f4cf";
-}
-
-.fa-fire-flame-simple::before {
- content: "\f46a";
-}
-
-.fa-burn::before {
- content: "\f46a";
-}
-
-.fa-person::before {
- content: "\f183";
-}
-
-.fa-male::before {
- content: "\f183";
-}
-
-.fa-laptop::before {
- content: "\f109";
-}
-
-.fa-file-csv::before {
- content: "\f6dd";
-}
-
-.fa-menorah::before {
- content: "\f676";
-}
-
-.fa-union::before {
- content: "\f6a2";
-}
-
-.fa-chevrons-left::before {
- content: "\f323";
-}
-
-.fa-chevron-double-left::before {
- content: "\f323";
-}
-
-.fa-circle-heart::before {
- content: "\f4c7";
-}
-
-.fa-heart-circle::before {
- content: "\f4c7";
-}
-
-.fa-truck-plane::before {
- content: "\e58f";
-}
-
-.fa-record-vinyl::before {
- content: "\f8d9";
-}
-
-.fa-bring-forward::before {
- content: "\f856";
-}
-
-.fa-square-p::before {
- content: "\e279";
-}
-
-.fa-face-grin-stars::before {
- content: "\f587";
-}
-
-.fa-grin-stars::before {
- content: "\f587";
-}
-
-.fa-sigma::before {
- content: "\f68b";
-}
-
-.fa-camera-movie::before {
- content: "\f8a9";
-}
-
-.fa-bong::before {
- content: "\f55c";
-}
-
-.fa-clarinet::before {
- content: "\f8ad";
-}
-
-.fa-truck-flatbed::before {
- content: "\e2b6";
-}
-
-.fa-spaghetti-monster-flying::before {
- content: "\f67b";
-}
-
-.fa-pastafarianism::before {
- content: "\f67b";
-}
-
-.fa-arrow-down-up-across-line::before {
- content: "\e4af";
-}
-
-.fa-leaf-heart::before {
- content: "\f4cb";
-}
-
-.fa-house-building::before {
- content: "\e1b1";
-}
-
-.fa-cheese-swiss::before {
- content: "\f7f0";
-}
-
-.fa-spoon::before {
- content: "\f2e5";
-}
-
-.fa-utensil-spoon::before {
- content: "\f2e5";
-}
-
-.fa-jar-wheat::before {
- content: "\e517";
-}
-
-.fa-envelopes-bulk::before {
- content: "\f674";
-}
-
-.fa-mail-bulk::before {
- content: "\f674";
-}
-
-.fa-file-circle-exclamation::before {
- content: "\e4eb";
-}
-
-.fa-bow-arrow::before {
- content: "\f6b9";
-}
-
-.fa-cart-xmark::before {
- content: "\e0dd";
-}
-
-.fa-hexagon-xmark::before {
- content: "\f2ee";
-}
-
-.fa-times-hexagon::before {
- content: "\f2ee";
-}
-
-.fa-xmark-hexagon::before {
- content: "\f2ee";
-}
-
-.fa-circle-h::before {
- content: "\f47e";
-}
-
-.fa-hospital-symbol::before {
- content: "\f47e";
-}
-
-.fa-merge::before {
- content: "\e526";
-}
-
-.fa-pager::before {
- content: "\f815";
-}
-
-.fa-cart-minus::before {
- content: "\e0db";
-}
-
-.fa-address-book::before {
- content: "\f2b9";
-}
-
-.fa-contact-book::before {
- content: "\f2b9";
-}
-
-.fa-pan-frying::before {
- content: "\e42c";
-}
-
-.fa-grid::before {
- content: "\e195";
-}
-
-.fa-grid-3::before {
- content: "\e195";
-}
-
-.fa-football-helmet::before {
- content: "\f44f";
-}
-
-.fa-hand-love::before {
- content: "\e1a5";
-}
-
-.fa-trees::before {
- content: "\f724";
-}
-
-.fa-strikethrough::before {
- content: "\f0cc";
-}
-
-.fa-page::before {
- content: "\e428";
-}
-
-.fa-k::before {
- content: "\4b";
-}
-
-.fa-diagram-previous::before {
- content: "\e478";
-}
-
-.fa-gauge-min::before {
- content: "\f628";
-}
-
-.fa-tachometer-alt-slowest::before {
- content: "\f628";
-}
-
-.fa-folder-grid::before {
- content: "\e188";
-}
-
-.fa-eggplant::before {
- content: "\e16c";
-}
-
-.fa-ram::before {
- content: "\f70a";
-}
-
-.fa-landmark-flag::before {
- content: "\e51c";
-}
-
-.fa-lips::before {
- content: "\f600";
-}
-
-.fa-pencil::before {
- content: "\f303";
-}
-
-.fa-pencil-alt::before {
- content: "\f303";
-}
-
-.fa-backward::before {
- content: "\f04a";
-}
-
-.fa-caret-right::before {
- content: "\f0da";
-}
-
-.fa-comments::before {
- content: "\f086";
-}
-
-.fa-paste::before {
- content: "\f0ea";
-}
-
-.fa-file-clipboard::before {
- content: "\f0ea";
-}
-
-.fa-desktop-arrow-down::before {
- content: "\e155";
-}
-
-.fa-code-pull-request::before {
- content: "\e13c";
-}
-
-.fa-pumpkin::before {
- content: "\f707";
-}
-
-.fa-clipboard-list::before {
- content: "\f46d";
-}
-
-.fa-pen-field::before {
- content: "\e211";
-}
-
-.fa-blueberries::before {
- content: "\e2e8";
-}
-
-.fa-truck-ramp-box::before {
- content: "\f4de";
-}
-
-.fa-truck-loading::before {
- content: "\f4de";
-}
-
-.fa-note::before {
- content: "\e1ff";
-}
-
-.fa-arrow-down-to-square::before {
- content: "\e096";
-}
-
-.fa-user-check::before {
- content: "\f4fc";
-}
-
-.fa-cloud-xmark::before {
- content: "\e35f";
-}
-
-.fa-vial-virus::before {
- content: "\e597";
-}
-
-.fa-book-blank::before {
- content: "\f5d9";
-}
-
-.fa-book-alt::before {
- content: "\f5d9";
-}
-
-.fa-golf-flag-hole::before {
- content: "\e3ac";
-}
-
-.fa-message-arrow-down::before {
- content: "\e1db";
-}
-
-.fa-comment-alt-arrow-down::before {
- content: "\e1db";
-}
-
-.fa-face-unamused::before {
- content: "\e39f";
-}
-
-.fa-sheet-plastic::before {
- content: "\e571";
-}
-
-.fa-circle-9::before {
- content: "\e0f6";
-}
-
-.fa-blog::before {
- content: "\f781";
-}
-
-.fa-user-ninja::before {
- content: "\f504";
-}
-
-.fa-pencil-slash::before {
- content: "\e215";
-}
-
-.fa-bowling-pins::before {
- content: "\f437";
-}
-
-.fa-person-arrow-up-from-line::before {
- content: "\e539";
-}
-
-.fa-down-right::before {
- content: "\e16b";
-}
-
-.fa-scroll-torah::before {
- content: "\f6a0";
-}
-
-.fa-torah::before {
- content: "\f6a0";
-}
-
-.fa-blinds-open::before {
- content: "\f8fc";
-}
-
-.fa-fence::before {
- content: "\e303";
-}
-
-.fa-up::before {
- content: "\f357";
-}
-
-.fa-arrow-alt-up::before {
- content: "\f357";
-}
-
-.fa-broom-ball::before {
- content: "\f458";
-}
-
-.fa-quidditch::before {
- content: "\f458";
-}
-
-.fa-quidditch-broom-ball::before {
- content: "\f458";
-}
-
-.fa-drumstick::before {
- content: "\f6d6";
-}
-
-.fa-square-v::before {
- content: "\e284";
-}
-
-.fa-face-awesome::before {
- content: "\e409";
-}
-
-.fa-gave-dandy::before {
- content: "\e409";
-}
-
-.fa-dial-off::before {
- content: "\e162";
-}
-
-.fa-toggle-off::before {
- content: "\f204";
-}
-
-.fa-face-smile-horns::before {
- content: "\e391";
-}
-
-.fa-box-archive::before {
- content: "\f187";
-}
-
-.fa-archive::before {
- content: "\f187";
-}
-
-.fa-grapes::before {
- content: "\e306";
-}
-
-.fa-person-drowning::before {
- content: "\e545";
-}
-
-.fa-dial-max::before {
- content: "\e15e";
-}
-
-.fa-circle-m::before {
- content: "\e115";
-}
-
-.fa-calendar-image::before {
- content: "\e0d4";
-}
-
-.fa-circle-caret-down::before {
- content: "\f32d";
-}
-
-.fa-caret-circle-down::before {
- content: "\f32d";
-}
-
-.fa-arrow-down-9-1::before {
- content: "\f886";
-}
-
-.fa-sort-numeric-desc::before {
- content: "\f886";
-}
-
-.fa-sort-numeric-down-alt::before {
- content: "\f886";
-}
-
-.fa-face-grin-tongue-squint::before {
- content: "\f58a";
-}
-
-.fa-grin-tongue-squint::before {
- content: "\f58a";
-}
-
-.fa-shish-kebab::before {
- content: "\f821";
-}
-
-.fa-spray-can::before {
- content: "\f5bd";
-}
-
-.fa-alarm-snooze::before {
- content: "\f845";
-}
-
-.fa-scarecrow::before {
- content: "\f70d";
-}
-
-.fa-truck-monster::before {
- content: "\f63b";
-}
-
-.fa-gift-card::before {
- content: "\f663";
-}
-
-.fa-w::before {
- content: "\57";
-}
-
-.fa-code-pull-request-draft::before {
- content: "\e3fa";
-}
-
-.fa-square-b::before {
- content: "\e264";
-}
-
-.fa-elephant::before {
- content: "\f6da";
-}
-
-.fa-earth-africa::before {
- content: "\f57c";
-}
-
-.fa-globe-africa::before {
- content: "\f57c";
-}
-
-.fa-rainbow::before {
- content: "\f75b";
-}
-
-.fa-circle-notch::before {
- content: "\f1ce";
-}
-
-.fa-tablet-screen-button::before {
- content: "\f3fa";
-}
-
-.fa-tablet-alt::before {
- content: "\f3fa";
-}
-
-.fa-paw::before {
- content: "\f1b0";
-}
-
-.fa-message-question::before {
- content: "\e1e3";
-}
-
-.fa-cloud::before {
- content: "\f0c2";
-}
-
-.fa-trowel-bricks::before {
- content: "\e58a";
-}
-
-.fa-square-3::before {
- content: "\e258";
-}
-
-.fa-face-flushed::before {
- content: "\f579";
-}
-
-.fa-flushed::before {
- content: "\f579";
-}
-
-.fa-hospital-user::before {
- content: "\f80d";
-}
-
-.fa-microwave::before {
- content: "\e01b";
-}
-
-.fa-tent-arrow-left-right::before {
- content: "\e57f";
-}
-
-.fa-cart-circle-arrow-up::before {
- content: "\e3f0";
-}
-
-.fa-trash-clock::before {
- content: "\e2b0";
-}
-
-.fa-gavel::before {
- content: "\f0e3";
-}
-
-.fa-legal::before {
- content: "\f0e3";
-}
-
-.fa-sprinkler-ceiling::before {
- content: "\e44c";
-}
-
-.fa-browsers::before {
- content: "\e0cb";
-}
-
-.fa-trillium::before {
- content: "\e588";
-}
-
-.fa-music-slash::before {
- content: "\f8d1";
-}
-
-.fa-truck-ramp::before {
- content: "\f4e0";
-}
-
-.fa-binoculars::before {
- content: "\f1e5";
-}
-
-.fa-microphone-slash::before {
- content: "\f131";
-}
-
-.fa-box-tissue::before {
- content: "\e05b";
-}
-
-.fa-circle-c::before {
- content: "\e101";
-}
-
-.fa-star-christmas::before {
- content: "\f7d4";
-}
-
-.fa-chart-bullet::before {
- content: "\e0e1";
-}
-
-.fa-motorcycle::before {
- content: "\f21c";
-}
-
-.fa-tree-christmas::before {
- content: "\f7db";
-}
-
-.fa-tire-flat::before {
- content: "\f632";
-}
-
-.fa-sunglasses::before {
- content: "\f892";
-}
-
-.fa-badge::before {
- content: "\f335";
-}
-
-.fa-message-pen::before {
- content: "\f4a4";
-}
-
-.fa-comment-alt-edit::before {
- content: "\f4a4";
-}
-
-.fa-message-edit::before {
- content: "\f4a4";
-}
-
-.fa-bell-concierge::before {
- content: "\f562";
-}
-
-.fa-concierge-bell::before {
- content: "\f562";
-}
-
-.fa-pen-ruler::before {
- content: "\f5ae";
-}
-
-.fa-pencil-ruler::before {
- content: "\f5ae";
-}
-
-.fa-chess-rook-piece::before {
- content: "\f448";
-}
-
-.fa-chess-rook-alt::before {
- content: "\f448";
-}
-
-.fa-square-root::before {
- content: "\f697";
-}
-
-.fa-album-collection-circle-plus::before {
- content: "\e48e";
-}
-
-.fa-people-arrows::before {
- content: "\e068";
-}
-
-.fa-people-arrows-left-right::before {
- content: "\e068";
-}
-
-.fa-face-angry-horns::before {
- content: "\e368";
-}
-
-.fa-mars-and-venus-burst::before {
- content: "\e523";
-}
-
-.fa-tombstone::before {
- content: "\f720";
-}
-
-.fa-square-caret-right::before {
- content: "\f152";
-}
-
-.fa-caret-square-right::before {
- content: "\f152";
-}
-
-.fa-scissors::before {
- content: "\f0c4";
-}
-
-.fa-cut::before {
- content: "\f0c4";
-}
-
-.fa-list-music::before {
- content: "\f8c9";
-}
-
-.fa-sun-plant-wilt::before {
- content: "\e57a";
-}
-
-.fa-toilets-portable::before {
- content: "\e584";
-}
-
-.fa-hockey-puck::before {
- content: "\f453";
-}
-
-.fa-mustache::before {
- content: "\e5bc";
-}
-
-.fa-hyphen::before {
- content: "\2d";
-}
-
-.fa-table::before {
- content: "\f0ce";
-}
-
-.fa-user-chef::before {
- content: "\e3d2";
-}
-
-.fa-message-image::before {
- content: "\e1e0";
-}
-
-.fa-comment-alt-image::before {
- content: "\e1e0";
-}
-
-.fa-users-medical::before {
- content: "\f830";
-}
-
-.fa-sensor-triangle-exclamation::before {
- content: "\e029";
-}
-
-.fa-sensor-alert::before {
- content: "\e029";
-}
-
-.fa-magnifying-glass-arrow-right::before {
- content: "\e521";
-}
-
-.fa-tachograph-digital::before {
- content: "\f566";
-}
-
-.fa-digital-tachograph::before {
- content: "\f566";
-}
-
-.fa-face-mask::before {
- content: "\e37f";
-}
-
-.fa-pickleball::before {
- content: "\e435";
-}
-
-.fa-star-sharp-half::before {
- content: "\e28c";
-}
-
-.fa-users-slash::before {
- content: "\e073";
-}
-
-.fa-clover::before {
- content: "\e139";
-}
-
-.fa-meat::before {
- content: "\f814";
-}
-
-.fa-reply::before {
- content: "\f3e5";
-}
-
-.fa-mail-reply::before {
- content: "\f3e5";
-}
-
-.fa-star-and-crescent::before {
- content: "\f699";
-}
-
-.fa-empty-set::before {
- content: "\f656";
-}
-
-.fa-house-fire::before {
- content: "\e50c";
-}
-
-.fa-square-minus::before {
- content: "\f146";
-}
-
-.fa-minus-square::before {
- content: "\f146";
-}
-
-.fa-helicopter::before {
- content: "\f533";
-}
-
-.fa-bird::before {
- content: "\e469";
-}
-
-.fa-compass::before {
- content: "\f14e";
-}
-
-.fa-square-caret-down::before {
- content: "\f150";
-}
-
-.fa-caret-square-down::before {
- content: "\f150";
-}
-
-.fa-heart-half-stroke::before {
- content: "\e1ac";
-}
-
-.fa-heart-half-alt::before {
- content: "\e1ac";
-}
-
-.fa-file-circle-question::before {
- content: "\e4ef";
-}
-
-.fa-laptop-code::before {
- content: "\f5fc";
-}
-
-.fa-joystick::before {
- content: "\f8c5";
-}
-
-.fa-grill-fire::before {
- content: "\e5a4";
-}
-
-.fa-rectangle-vertical-history::before {
- content: "\e237";
-}
-
-.fa-swatchbook::before {
- content: "\f5c3";
-}
-
-.fa-prescription-bottle::before {
- content: "\f485";
-}
-
-.fa-bars::before {
- content: "\f0c9";
-}
-
-.fa-navicon::before {
- content: "\f0c9";
-}
-
-.fa-keyboard-left::before {
- content: "\e1c3";
-}
-
-.fa-people-group::before {
- content: "\e533";
-}
-
-.fa-hourglass-end::before {
- content: "\f253";
-}
-
-.fa-hourglass-3::before {
- content: "\f253";
-}
-
-.fa-heart-crack::before {
- content: "\f7a9";
-}
-
-.fa-heart-broken::before {
- content: "\f7a9";
-}
-
-.fa-face-beam-hand-over-mouth::before {
- content: "\e47c";
-}
-
-.fa-droplet-percent::before {
- content: "\f750";
-}
-
-.fa-humidity::before {
- content: "\f750";
-}
-
-.fa-square-up-right::before {
- content: "\f360";
-}
-
-.fa-external-link-square-alt::before {
- content: "\f360";
-}
-
-.fa-face-kiss-beam::before {
- content: "\f597";
-}
-
-.fa-kiss-beam::before {
- content: "\f597";
-}
-
-.fa-corn::before {
- content: "\f6c7";
-}
-
-.fa-roller-coaster::before {
- content: "\e324";
-}
-
-.fa-photo-film-music::before {
- content: "\e228";
-}
-
-.fa-radar::before {
- content: "\e024";
-}
-
-.fa-sickle::before {
- content: "\f822";
-}
-
-.fa-film::before {
- content: "\f008";
-}
-
-.fa-coconut::before {
- content: "\e2f6";
-}
-
-.fa-ruler-horizontal::before {
- content: "\f547";
-}
-
-.fa-shield-cross::before {
- content: "\f712";
-}
-
-.fa-cassette-tape::before {
- content: "\f8ab";
-}
-
-.fa-square-terminal::before {
- content: "\e32a";
-}
-
-.fa-people-robbery::before {
- content: "\e536";
-}
-
-.fa-lightbulb::before {
- content: "\f0eb";
-}
-
-.fa-caret-left::before {
- content: "\f0d9";
-}
-
-.fa-comment-middle::before {
- content: "\e149";
-}
-
-.fa-trash-can-list::before {
- content: "\e2ab";
-}
-
-.fa-block::before {
- content: "\e46a";
-}
-
-.fa-circle-exclamation::before {
- content: "\f06a";
-}
-
-.fa-exclamation-circle::before {
- content: "\f06a";
-}
-
-.fa-school-circle-xmark::before {
- content: "\e56d";
-}
-
-.fa-arrow-right-from-bracket::before {
- content: "\f08b";
-}
-
-.fa-sign-out::before {
- content: "\f08b";
-}
-
-.fa-face-frown-slight::before {
- content: "\e376";
-}
-
-.fa-circle-chevron-down::before {
- content: "\f13a";
-}
-
-.fa-chevron-circle-down::before {
- content: "\f13a";
-}
-
-.fa-sidebar-flip::before {
- content: "\e24f";
-}
-
-.fa-unlock-keyhole::before {
- content: "\f13e";
-}
-
-.fa-unlock-alt::before {
- content: "\f13e";
-}
-
-.fa-temperature-list::before {
- content: "\e299";
-}
-
-.fa-cloud-showers-heavy::before {
- content: "\f740";
-}
-
-.fa-headphones-simple::before {
- content: "\f58f";
-}
-
-.fa-headphones-alt::before {
- content: "\f58f";
-}
-
-.fa-sitemap::before {
- content: "\f0e8";
-}
-
-.fa-pipe-section::before {
- content: "\e438";
-}
-
-.fa-space-station-moon-construction::before {
- content: "\e034";
-}
-
-.fa-space-station-moon-alt::before {
- content: "\e034";
-}
-
-.fa-circle-dollar-to-slot::before {
- content: "\f4b9";
-}
-
-.fa-donate::before {
- content: "\f4b9";
-}
-
-.fa-memory::before {
- content: "\f538";
-}
-
-.fa-face-sleeping::before {
- content: "\e38d";
-}
-
-.fa-road-spikes::before {
- content: "\e568";
-}
-
-.fa-fire-burner::before {
- content: "\e4f1";
-}
-
-.fa-squirrel::before {
- content: "\f71a";
-}
-
-.fa-arrow-up-to-line::before {
- content: "\f341";
-}
-
-.fa-arrow-to-top::before {
- content: "\f341";
-}
-
-.fa-flag::before {
- content: "\f024";
-}
-
-.fa-face-cowboy-hat::before {
- content: "\e36e";
-}
-
-.fa-hanukiah::before {
- content: "\f6e6";
-}
-
-.fa-chart-scatter-3d::before {
- content: "\e0e8";
-}
-
-.fa-square-code::before {
- content: "\e267";
-}
-
-.fa-feather::before {
- content: "\f52d";
-}
-
-.fa-volume-low::before {
- content: "\f027";
-}
-
-.fa-volume-down::before {
- content: "\f027";
-}
-
-.fa-xmark-to-slot::before {
- content: "\f771";
-}
-
-.fa-times-to-slot::before {
- content: "\f771";
-}
-
-.fa-vote-nay::before {
- content: "\f771";
-}
-
-.fa-box-taped::before {
- content: "\f49a";
-}
-
-.fa-box-alt::before {
- content: "\f49a";
-}
-
-.fa-comment-slash::before {
- content: "\f4b3";
-}
-
-.fa-swords::before {
- content: "\f71d";
-}
-
-.fa-cloud-sun-rain::before {
- content: "\f743";
-}
-
-.fa-album::before {
- content: "\f89f";
-}
-
-.fa-circle-n::before {
- content: "\e118";
-}
-
-.fa-compress::before {
- content: "\f066";
-}
-
-.fa-wheat-awn::before {
- content: "\e2cd";
-}
-
-.fa-wheat-alt::before {
- content: "\e2cd";
-}
-
-.fa-ankh::before {
- content: "\f644";
-}
-
-.fa-hands-holding-child::before {
- content: "\e4fa";
-}
-
-.fa-asterisk::before {
- content: "\2a";
-}
-
-.fa-key-skeleton-left-right::before {
- content: "\e3b4";
-}
-
-.fa-comment-lines::before {
- content: "\f4b0";
-}
-
-.fa-luchador-mask::before {
- content: "\f455";
-}
-
-.fa-luchador::before {
- content: "\f455";
-}
-
-.fa-mask-luchador::before {
- content: "\f455";
-}
-
-.fa-square-check::before {
- content: "\f14a";
-}
-
-.fa-check-square::before {
- content: "\f14a";
-}
-
-.fa-shredder::before {
- content: "\f68a";
-}
-
-.fa-book-open-cover::before {
- content: "\e0c0";
-}
-
-.fa-book-open-alt::before {
- content: "\e0c0";
-}
-
-.fa-sandwich::before {
- content: "\f81f";
-}
-
-.fa-peseta-sign::before {
- content: "\e221";
-}
-
-.fa-square-parking-slash::before {
- content: "\f617";
-}
-
-.fa-parking-slash::before {
- content: "\f617";
-}
-
-.fa-train-tunnel::before {
- content: "\e454";
-}
-
-.fa-heading::before {
- content: "\f1dc";
-}
-
-.fa-header::before {
- content: "\f1dc";
-}
-
-.fa-ghost::before {
- content: "\f6e2";
-}
-
-.fa-face-anguished::before {
- content: "\e369";
-}
-
-.fa-hockey-sticks::before {
- content: "\f454";
-}
-
-.fa-abacus::before {
- content: "\f640";
-}
-
-.fa-film-simple::before {
- content: "\f3a0";
-}
-
-.fa-film-alt::before {
- content: "\f3a0";
-}
-
-.fa-list::before {
- content: "\f03a";
-}
-
-.fa-list-squares::before {
- content: "\f03a";
-}
-
-.fa-tree-palm::before {
- content: "\f82b";
-}
-
-.fa-square-phone-flip::before {
- content: "\f87b";
-}
-
-.fa-phone-square-alt::before {
- content: "\f87b";
-}
-
-.fa-cart-plus::before {
- content: "\f217";
-}
-
-.fa-gamepad::before {
- content: "\f11b";
-}
-
-.fa-border-center-v::before {
- content: "\f89d";
-}
-
-.fa-circle-dot::before {
- content: "\f192";
-}
-
-.fa-dot-circle::before {
- content: "\f192";
-}
-
-.fa-clipboard-medical::before {
- content: "\e133";
-}
-
-.fa-face-dizzy::before {
- content: "\f567";
-}
-
-.fa-dizzy::before {
- content: "\f567";
-}
-
-.fa-egg::before {
- content: "\f7fb";
-}
-
-.fa-up-to-line::before {
- content: "\f34d";
-}
-
-.fa-arrow-alt-to-top::before {
- content: "\f34d";
-}
-
-.fa-house-medical-circle-xmark::before {
- content: "\e513";
-}
-
-.fa-watch-fitness::before {
- content: "\f63e";
-}
-
-.fa-clock-nine-thirty::before {
- content: "\e34d";
-}
-
-.fa-campground::before {
- content: "\f6bb";
-}
-
-.fa-folder-plus::before {
- content: "\f65e";
-}
-
-.fa-jug::before {
- content: "\f8c6";
-}
-
-.fa-futbol::before {
- content: "\f1e3";
-}
-
-.fa-futbol-ball::before {
- content: "\f1e3";
-}
-
-.fa-soccer-ball::before {
- content: "\f1e3";
-}
-
-.fa-snow-blowing::before {
- content: "\f761";
-}
-
-.fa-paintbrush::before {
- content: "\f1fc";
-}
-
-.fa-paint-brush::before {
- content: "\f1fc";
-}
-
-.fa-lock::before {
- content: "\f023";
-}
-
-.fa-arrow-down-from-line::before {
- content: "\f345";
-}
-
-.fa-arrow-from-top::before {
- content: "\f345";
-}
-
-.fa-gas-pump::before {
- content: "\f52f";
-}
-
-.fa-signal-bars-slash::before {
- content: "\f694";
-}
-
-.fa-signal-alt-slash::before {
- content: "\f694";
-}
-
-.fa-monkey::before {
- content: "\f6fb";
-}
-
-.fa-rectangle-pro::before {
- content: "\e235";
-}
-
-.fa-pro::before {
- content: "\e235";
-}
-
-.fa-house-night::before {
- content: "\e010";
-}
-
-.fa-hot-tub-person::before {
- content: "\f593";
-}
-
-.fa-hot-tub::before {
- content: "\f593";
-}
-
-.fa-blanket::before {
- content: "\f498";
-}
-
-.fa-map-location::before {
- content: "\f59f";
-}
-
-.fa-map-marked::before {
- content: "\f59f";
-}
-
-.fa-house-flood-water::before {
- content: "\e50e";
-}
-
-.fa-comments-question-check::before {
- content: "\e14f";
-}
-
-.fa-tree::before {
- content: "\f1bb";
-}
-
-.fa-arrows-cross::before {
- content: "\e0a2";
-}
-
-.fa-backpack::before {
- content: "\f5d4";
-}
-
-.fa-square-small::before {
- content: "\e27e";
-}
-
-.fa-folder-arrow-up::before {
- content: "\e054";
-}
-
-.fa-folder-upload::before {
- content: "\e054";
-}
-
-.fa-bridge-lock::before {
- content: "\e4cc";
-}
-
-.fa-crosshairs-simple::before {
- content: "\e59f";
-}
-
-.fa-sack-dollar::before {
- content: "\f81d";
-}
-
-.fa-pen-to-square::before {
- content: "\f044";
-}
-
-.fa-edit::before {
- content: "\f044";
-}
-
-.fa-square-sliders::before {
- content: "\f3f0";
-}
-
-.fa-sliders-h-square::before {
- content: "\f3f0";
-}
-
-.fa-car-side::before {
- content: "\f5e4";
-}
-
-.fa-message-middle-top::before {
- content: "\e1e2";
-}
-
-.fa-comment-middle-top-alt::before {
- content: "\e1e2";
-}
-
-.fa-lightbulb-on::before {
- content: "\f672";
-}
-
-.fa-knife::before {
- content: "\f2e4";
-}
-
-.fa-utensil-knife::before {
- content: "\f2e4";
-}
-
-.fa-share-nodes::before {
- content: "\f1e0";
-}
-
-.fa-share-alt::before {
- content: "\f1e0";
-}
-
-.fa-wave-sine::before {
- content: "\f899";
-}
-
-.fa-heart-circle-minus::before {
- content: "\e4ff";
-}
-
-.fa-circle-w::before {
- content: "\e12c";
-}
-
-.fa-circle-calendar::before {
- content: "\e102";
-}
-
-.fa-calendar-circle::before {
- content: "\e102";
-}
-
-.fa-hourglass-half::before {
- content: "\f252";
-}
-
-.fa-hourglass-2::before {
- content: "\f252";
-}
-
-.fa-microscope::before {
- content: "\f610";
-}
-
-.fa-sunset::before {
- content: "\f767";
-}
-
-.fa-sink::before {
- content: "\e06d";
-}
-
-.fa-calendar-exclamation::before {
- content: "\f334";
-}
-
-.fa-truck-container-empty::before {
- content: "\e2b5";
-}
-
-.fa-hand-heart::before {
- content: "\f4bc";
-}
-
-.fa-bag-shopping::before {
- content: "\f290";
-}
-
-.fa-shopping-bag::before {
- content: "\f290";
-}
-
-.fa-arrow-down-z-a::before {
- content: "\f881";
-}
-
-.fa-sort-alpha-desc::before {
- content: "\f881";
-}
-
-.fa-sort-alpha-down-alt::before {
- content: "\f881";
-}
-
-.fa-mitten::before {
- content: "\f7b5";
-}
-
-.fa-reply-clock::before {
- content: "\e239";
-}
-
-.fa-reply-time::before {
- content: "\e239";
-}
-
-.fa-person-rays::before {
- content: "\e54d";
-}
-
-.fa-right::before {
- content: "\f356";
-}
-
-.fa-arrow-alt-right::before {
- content: "\f356";
-}
-
-.fa-circle-f::before {
- content: "\e10e";
-}
-
-.fa-users::before {
- content: "\f0c0";
-}
-
-.fa-face-pleading::before {
- content: "\e386";
-}
-
-.fa-eye-slash::before {
- content: "\f070";
-}
-
-.fa-flask-vial::before {
- content: "\e4f3";
-}
-
-.fa-police-box::before {
- content: "\e021";
-}
-
-.fa-cucumber::before {
- content: "\e401";
-}
-
-.fa-head-side-brain::before {
- content: "\f808";
-}
-
-.fa-hand::before {
- content: "\f256";
-}
-
-.fa-hand-paper::before {
- content: "\f256";
-}
-
-.fa-person-biking-mountain::before {
- content: "\f84b";
-}
-
-.fa-biking-mountain::before {
- content: "\f84b";
-}
-
-.fa-utensils-slash::before {
- content: "\e464";
-}
-
-.fa-print-magnifying-glass::before {
- content: "\f81a";
-}
-
-.fa-print-search::before {
- content: "\f81a";
-}
-
-.fa-folder-bookmark::before {
- content: "\e186";
-}
-
-.fa-om::before {
- content: "\f679";
-}
-
-.fa-pi::before {
- content: "\f67e";
-}
-
-.fa-flask-round-potion::before {
- content: "\f6e1";
-}
-
-.fa-flask-potion::before {
- content: "\f6e1";
-}
-
-.fa-face-shush::before {
- content: "\e38c";
-}
-
-.fa-worm::before {
- content: "\e599";
-}
-
-.fa-house-circle-xmark::before {
- content: "\e50b";
-}
-
-.fa-plug::before {
- content: "\f1e6";
-}
-
-.fa-calendar-circle-exclamation::before {
- content: "\e46e";
-}
-
-.fa-square-i::before {
- content: "\e272";
-}
-
-.fa-chevron-up::before {
- content: "\f077";
-}
-
-.fa-face-saluting::before {
- content: "\e484";
-}
-
-.fa-gauge-simple-low::before {
- content: "\f62c";
-}
-
-.fa-tachometer-slow::before {
- content: "\f62c";
-}
-
-.fa-face-persevering::before {
- content: "\e385";
-}
-
-.fa-circle-camera::before {
- content: "\e103";
-}
-
-.fa-camera-circle::before {
- content: "\e103";
-}
-
-.fa-hand-spock::before {
- content: "\f259";
-}
-
-.fa-spider-web::before {
- content: "\f719";
-}
-
-.fa-circle-microphone::before {
- content: "\e116";
-}
-
-.fa-microphone-circle::before {
- content: "\e116";
-}
-
-.fa-book-arrow-up::before {
- content: "\e0ba";
-}
-
-.fa-popsicle::before {
- content: "\e43e";
-}
-
-.fa-command::before {
- content: "\e142";
-}
-
-.fa-blinds::before {
- content: "\f8fb";
-}
-
-.fa-stopwatch::before {
- content: "\f2f2";
-}
-
-.fa-saxophone::before {
- content: "\f8dc";
-}
-
-.fa-square-2::before {
- content: "\e257";
-}
-
-.fa-field-hockey-stick-ball::before {
- content: "\f44c";
-}
-
-.fa-field-hockey::before {
- content: "\f44c";
-}
-
-.fa-arrow-up-square-triangle::before {
- content: "\f88b";
-}
-
-.fa-sort-shapes-up-alt::before {
- content: "\f88b";
-}
-
-.fa-face-scream::before {
- content: "\e38b";
-}
-
-.fa-square-m::before {
- content: "\e276";
-}
-
-.fa-camera-web::before {
- content: "\f832";
-}
-
-.fa-webcam::before {
- content: "\f832";
-}
-
-.fa-comment-arrow-down::before {
- content: "\e143";
-}
-
-.fa-lightbulb-cfl::before {
- content: "\e5a6";
-}
-
-.fa-window-frame-open::before {
- content: "\e050";
-}
-
-.fa-face-kiss::before {
- content: "\f596";
-}
-
-.fa-kiss::before {
- content: "\f596";
-}
-
-.fa-bridge-circle-xmark::before {
- content: "\e4cb";
-}
-
-.fa-period::before {
- content: "\2e";
-}
-
-.fa-face-grin-tongue::before {
- content: "\f589";
-}
-
-.fa-grin-tongue::before {
- content: "\f589";
-}
-
-.fa-up-to-dotted-line::before {
- content: "\e457";
-}
-
-.fa-thought-bubble::before {
- content: "\e32e";
-}
-
-.fa-raygun::before {
- content: "\e025";
-}
-
-.fa-flute::before {
- content: "\f8b9";
-}
-
-.fa-acorn::before {
- content: "\f6ae";
-}
-
-.fa-video-arrow-up-right::before {
- content: "\e2c9";
-}
-
-.fa-grate-droplet::before {
- content: "\e194";
-}
-
-.fa-seal-exclamation::before {
- content: "\e242";
-}
-
-.fa-chess-bishop::before {
- content: "\f43a";
-}
-
-.fa-message-sms::before {
- content: "\e1e5";
-}
-
-.fa-coffee-beans::before {
- content: "\e13f";
-}
-
-.fa-hat-witch::before {
- content: "\f6e7";
-}
-
-.fa-face-grin-wink::before {
- content: "\f58c";
-}
-
-.fa-grin-wink::before {
- content: "\f58c";
-}
-
-.fa-clock-three-thirty::before {
- content: "\e357";
-}
-
-.fa-ear-deaf::before {
- content: "\f2a4";
-}
-
-.fa-deaf::before {
- content: "\f2a4";
-}
-
-.fa-deafness::before {
- content: "\f2a4";
-}
-
-.fa-hard-of-hearing::before {
- content: "\f2a4";
-}
-
-.fa-alarm-clock::before {
- content: "\f34e";
-}
-
-.fa-eclipse::before {
- content: "\f749";
-}
-
-.fa-face-relieved::before {
- content: "\e389";
-}
-
-.fa-road-circle-check::before {
- content: "\e564";
-}
-
-.fa-dice-five::before {
- content: "\f523";
-}
-
-.fa-octagon-minus::before {
- content: "\f308";
-}
-
-.fa-minus-octagon::before {
- content: "\f308";
-}
-
-.fa-square-rss::before {
- content: "\f143";
-}
-
-.fa-rss-square::before {
- content: "\f143";
-}
-
-.fa-face-zany::before {
- content: "\e3a4";
-}
-
-.fa-tricycle::before {
- content: "\e5c3";
-}
-
-.fa-land-mine-on::before {
- content: "\e51b";
-}
-
-.fa-square-arrow-up-left::before {
- content: "\e263";
-}
-
-.fa-i-cursor::before {
- content: "\f246";
-}
-
-.fa-salt-shaker::before {
- content: "\e446";
-}
-
-.fa-stamp::before {
- content: "\f5bf";
-}
-
-.fa-file-plus::before {
- content: "\f319";
-}
-
-.fa-draw-square::before {
- content: "\f5ef";
-}
-
-.fa-toilet-paper-under-slash::before {
- content: "\e2a1";
-}
-
-.fa-toilet-paper-reverse-slash::before {
- content: "\e2a1";
-}
-
-.fa-stairs::before {
- content: "\e289";
-}
-
-.fa-drone-front::before {
- content: "\f860";
-}
-
-.fa-drone-alt::before {
- content: "\f860";
-}
-
-.fa-glass-empty::before {
- content: "\e191";
-}
-
-.fa-dial-high::before {
- content: "\e15c";
-}
-
-.fa-user-helmet-safety::before {
- content: "\f82c";
-}
-
-.fa-user-construction::before {
- content: "\f82c";
-}
-
-.fa-user-hard-hat::before {
- content: "\f82c";
-}
-
-.fa-i::before {
- content: "\49";
-}
-
-.fa-hryvnia-sign::before {
- content: "\f6f2";
-}
-
-.fa-hryvnia::before {
- content: "\f6f2";
-}
-
-.fa-arrow-down-left-and-arrow-up-right-to-center::before {
- content: "\e092";
-}
-
-.fa-pills::before {
- content: "\f484";
-}
-
-.fa-face-grin-wide::before {
- content: "\f581";
-}
-
-.fa-grin-alt::before {
- content: "\f581";
-}
-
-.fa-tooth::before {
- content: "\f5c9";
-}
-
-.fa-basketball-hoop::before {
- content: "\f435";
-}
-
-.fa-objects-align-bottom::before {
- content: "\e3bb";
-}
-
-.fa-v::before {
- content: "\56";
-}
-
-.fa-sparkles::before {
- content: "\f890";
-}
-
-.fa-squid::before {
- content: "\e450";
-}
-
-.fa-leafy-green::before {
- content: "\e41d";
-}
-
-.fa-circle-arrow-up-right::before {
- content: "\e0fc";
-}
-
-.fa-calendars::before {
- content: "\e0d7";
-}
-
-.fa-bangladeshi-taka-sign::before {
- content: "\e2e6";
-}
-
-.fa-bicycle::before {
- content: "\f206";
-}
-
-.fa-hammer-war::before {
- content: "\f6e4";
-}
-
-.fa-circle-d::before {
- content: "\e104";
-}
-
-.fa-spider-black-widow::before {
- content: "\f718";
-}
-
-.fa-staff-snake::before {
- content: "\e579";
-}
-
-.fa-rod-asclepius::before {
- content: "\e579";
-}
-
-.fa-rod-snake::before {
- content: "\e579";
-}
-
-.fa-staff-aesculapius::before {
- content: "\e579";
-}
-
-.fa-pear::before {
- content: "\e20c";
-}
-
-.fa-head-side-cough-slash::before {
- content: "\e062";
-}
-
-.fa-triangle::before {
- content: "\f2ec";
-}
-
-.fa-apartment::before {
- content: "\e468";
-}
-
-.fa-truck-medical::before {
- content: "\f0f9";
-}
-
-.fa-ambulance::before {
- content: "\f0f9";
-}
-
-.fa-pepper::before {
- content: "\e432";
-}
-
-.fa-piano::before {
- content: "\f8d4";
-}
-
-.fa-gun-squirt::before {
- content: "\e19d";
-}
-
-.fa-wheat-awn-circle-exclamation::before {
- content: "\e598";
-}
-
-.fa-snowman::before {
- content: "\f7d0";
-}
-
-.fa-user-alien::before {
- content: "\e04a";
-}
-
-.fa-shield-check::before {
- content: "\f2f7";
-}
-
-.fa-mortar-pestle::before {
- content: "\f5a7";
-}
-
-.fa-road-barrier::before {
- content: "\e562";
-}
-
-.fa-chart-candlestick::before {
- content: "\e0e2";
-}
-
-.fa-briefcase-blank::before {
- content: "\e0c8";
-}
-
-.fa-school::before {
- content: "\f549";
-}
-
-.fa-igloo::before {
- content: "\f7ae";
-}
-
-.fa-bracket-round::before {
- content: "\28";
-}
-
-.fa-parenthesis::before {
- content: "\28";
-}
-
-.fa-joint::before {
- content: "\f595";
-}
-
-.fa-horse-saddle::before {
- content: "\f8c3";
-}
-
-.fa-mug-marshmallows::before {
- content: "\f7b7";
-}
-
-.fa-filters::before {
- content: "\e17e";
-}
-
-.fa-bell-on::before {
- content: "\f8fa";
-}
-
-.fa-angle-right::before {
- content: "\f105";
-}
-
-.fa-dial-med::before {
- content: "\e15f";
-}
-
-.fa-horse::before {
- content: "\f6f0";
-}
-
-.fa-q::before {
- content: "\51";
-}
-
-.fa-monitor-waveform::before {
- content: "\f611";
-}
-
-.fa-monitor-heart-rate::before {
- content: "\f611";
-}
-
-.fa-link-simple::before {
- content: "\e1cd";
-}
-
-.fa-whistle::before {
- content: "\f460";
-}
-
-.fa-g::before {
- content: "\47";
-}
-
-.fa-wine-glass-crack::before {
- content: "\f4bb";
-}
-
-.fa-fragile::before {
- content: "\f4bb";
-}
-
-.fa-slot-machine::before {
- content: "\e3ce";
-}
-
-.fa-notes-medical::before {
- content: "\f481";
-}
-
-.fa-car-wash::before {
- content: "\f5e6";
-}
-
-.fa-escalator::before {
- content: "\e171";
-}
-
-.fa-comment-image::before {
- content: "\e148";
-}
-
-.fa-temperature-half::before {
- content: "\f2c9";
-}
-
-.fa-temperature-2::before {
- content: "\f2c9";
-}
-
-.fa-thermometer-2::before {
- content: "\f2c9";
-}
-
-.fa-thermometer-half::before {
- content: "\f2c9";
-}
-
-.fa-dong-sign::before {
- content: "\e169";
-}
-
-.fa-donut::before {
- content: "\e406";
-}
-
-.fa-doughnut::before {
- content: "\e406";
-}
-
-.fa-capsules::before {
- content: "\f46b";
-}
-
-.fa-poo-storm::before {
- content: "\f75a";
-}
-
-.fa-poo-bolt::before {
- content: "\f75a";
-}
-
-.fa-tally-1::before {
- content: "\e294";
-}
-
-.fa-face-frown-open::before {
- content: "\f57a";
-}
-
-.fa-frown-open::before {
- content: "\f57a";
-}
-
-.fa-square-dashed::before {
- content: "\e269";
-}
-
-.fa-square-j::before {
- content: "\e273";
-}
-
-.fa-hand-point-up::before {
- content: "\f0a6";
-}
-
-.fa-money-bill::before {
- content: "\f0d6";
-}
-
-.fa-arrow-up-big-small::before {
- content: "\f88e";
-}
-
-.fa-sort-size-up::before {
- content: "\f88e";
-}
-
-.fa-barcode-read::before {
- content: "\f464";
-}
-
-.fa-baguette::before {
- content: "\e3d8";
-}
-
-.fa-bowl-soft-serve::before {
- content: "\e46b";
-}
-
-.fa-face-holding-back-tears::before {
- content: "\e482";
-}
-
-.fa-square-up::before {
- content: "\f353";
-}
-
-.fa-arrow-alt-square-up::before {
- content: "\f353";
-}
-
-.fa-train-subway-tunnel::before {
- content: "\e2a3";
-}
-
-.fa-subway-tunnel::before {
- content: "\e2a3";
-}
-
-.fa-square-exclamation::before {
- content: "\f321";
-}
-
-.fa-exclamation-square::before {
- content: "\f321";
-}
-
-.fa-semicolon::before {
- content: "\3b";
-}
-
-.fa-bookmark::before {
- content: "\f02e";
-}
-
-.fa-fan-table::before {
- content: "\e004";
-}
-
-.fa-align-justify::before {
- content: "\f039";
-}
-
-.fa-battery-low::before {
- content: "\e0b1";
-}
-
-.fa-battery-1::before {
- content: "\e0b1";
-}
-
-.fa-credit-card-front::before {
- content: "\f38a";
-}
-
-.fa-brain-arrow-curved-right::before {
- content: "\f677";
-}
-
-.fa-mind-share::before {
- content: "\f677";
-}
-
-.fa-umbrella-beach::before {
- content: "\f5ca";
-}
-
-.fa-helmet-un::before {
- content: "\e503";
-}
-
-.fa-location-smile::before {
- content: "\f60d";
-}
-
-.fa-map-marker-smile::before {
- content: "\f60d";
-}
-
-.fa-arrow-left-to-line::before {
- content: "\f33e";
-}
-
-.fa-arrow-to-left::before {
- content: "\f33e";
-}
-
-.fa-bullseye::before {
- content: "\f140";
-}
-
-.fa-sushi::before {
- content: "\e48a";
-}
-
-.fa-nigiri::before {
- content: "\e48a";
-}
-
-.fa-message-captions::before {
- content: "\e1de";
-}
-
-.fa-comment-alt-captions::before {
- content: "\e1de";
-}
-
-.fa-trash-list::before {
- content: "\e2b1";
-}
-
-.fa-bacon::before {
- content: "\f7e5";
-}
-
-.fa-option::before {
- content: "\e318";
-}
-
-.fa-hand-point-down::before {
- content: "\f0a7";
-}
-
-.fa-arrow-up-from-bracket::before {
- content: "\e09a";
-}
-
-.fa-trash-plus::before {
- content: "\e2b2";
-}
-
-.fa-objects-align-top::before {
- content: "\e3c0";
-}
-
-.fa-folder::before {
- content: "\f07b";
-}
-
-.fa-folder-blank::before {
- content: "\f07b";
-}
-
-.fa-face-anxious-sweat::before {
- content: "\e36a";
-}
-
-.fa-credit-card-blank::before {
- content: "\f389";
-}
-
-.fa-file-waveform::before {
- content: "\f478";
-}
-
-.fa-file-medical-alt::before {
- content: "\f478";
-}
-
-.fa-microchip-ai::before {
- content: "\e1ec";
-}
-
-.fa-mug::before {
- content: "\f874";
-}
-
-.fa-plane-up-slash::before {
- content: "\e22e";
-}
-
-.fa-radiation::before {
- content: "\f7b9";
-}
-
-.fa-pen-circle::before {
- content: "\e20e";
-}
-
-.fa-chart-simple::before {
- content: "\e473";
-}
-
-.fa-crutches::before {
- content: "\f7f8";
-}
-
-.fa-circle-parking::before {
- content: "\f615";
-}
-
-.fa-parking-circle::before {
- content: "\f615";
-}
-
-.fa-mars-stroke::before {
- content: "\f229";
-}
-
-.fa-leaf-oak::before {
- content: "\f6f7";
-}
-
-.fa-square-bolt::before {
- content: "\e265";
-}
-
-.fa-vial::before {
- content: "\f492";
-}
-
-.fa-gauge::before {
- content: "\f624";
-}
-
-.fa-dashboard::before {
- content: "\f624";
-}
-
-.fa-gauge-med::before {
- content: "\f624";
-}
-
-.fa-tachometer-alt-average::before {
- content: "\f624";
-}
-
-.fa-wand-magic-sparkles::before {
- content: "\e2ca";
-}
-
-.fa-magic-wand-sparkles::before {
- content: "\e2ca";
-}
-
-.fa-lambda::before {
- content: "\f66e";
-}
-
-.fa-e::before {
- content: "\45";
-}
-
-.fa-pizza::before {
- content: "\f817";
-}
-
-.fa-bowl-chopsticks-noodles::before {
- content: "\e2ea";
-}
-
-.fa-h3::before {
- content: "\f315";
-}
-
-.fa-pen-clip::before {
- content: "\f305";
-}
-
-.fa-pen-alt::before {
- content: "\f305";
-}
-
-.fa-bridge-circle-exclamation::before {
- content: "\e4ca";
-}
-
-.fa-badge-percent::before {
- content: "\f646";
-}
-
-.fa-user::before {
- content: "\f007";
-}
-
-.fa-sensor::before {
- content: "\e028";
-}
-
-.fa-comma::before {
- content: "\2c";
-}
-
-.fa-school-circle-check::before {
- content: "\e56b";
-}
-
-.fa-toilet-paper-under::before {
- content: "\e2a0";
-}
-
-.fa-toilet-paper-reverse::before {
- content: "\e2a0";
-}
-
-.fa-light-emergency::before {
- content: "\e41f";
-}
-
-.fa-arrow-down-to-arc::before {
- content: "\e4ae";
-}
-
-.fa-dumpster::before {
- content: "\f793";
-}
-
-.fa-van-shuttle::before {
- content: "\f5b6";
-}
-
-.fa-shuttle-van::before {
- content: "\f5b6";
-}
-
-.fa-building-user::before {
- content: "\e4da";
-}
-
-.fa-light-switch::before {
- content: "\e017";
-}
-
-.fa-square-caret-left::before {
- content: "\f191";
-}
-
-.fa-caret-square-left::before {
- content: "\f191";
-}
-
-.fa-highlighter::before {
- content: "\f591";
-}
-
-.fa-wave-pulse::before {
- content: "\f5f8";
-}
-
-.fa-heart-rate::before {
- content: "\f5f8";
-}
-
-.fa-key::before {
- content: "\f084";
-}
-
-.fa-hat-santa::before {
- content: "\f7a7";
-}
-
-.fa-tamale::before {
- content: "\e451";
-}
-
-.fa-box-check::before {
- content: "\f467";
-}
-
-.fa-bullhorn::before {
- content: "\f0a1";
-}
-
-.fa-steak::before {
- content: "\f824";
-}
-
-.fa-location-crosshairs-slash::before {
- content: "\f603";
-}
-
-.fa-location-slash::before {
- content: "\f603";
-}
-
-.fa-person-dolly::before {
- content: "\f4d0";
-}
-
-.fa-globe::before {
- content: "\f0ac";
-}
-
-.fa-synagogue::before {
- content: "\f69b";
-}
-
-.fa-file-chart-column::before {
- content: "\f659";
-}
-
-.fa-file-chart-line::before {
- content: "\f659";
-}
-
-.fa-person-half-dress::before {
- content: "\e548";
-}
-
-.fa-folder-image::before {
- content: "\e18a";
-}
-
-.fa-calendar-pen::before {
- content: "\f333";
-}
-
-.fa-calendar-edit::before {
- content: "\f333";
-}
-
-.fa-road-bridge::before {
- content: "\e563";
-}
-
-.fa-face-smile-tear::before {
- content: "\e393";
-}
-
-.fa-message-plus::before {
- content: "\f4a8";
-}
-
-.fa-comment-alt-plus::before {
- content: "\f4a8";
-}
-
-.fa-location-arrow::before {
- content: "\f124";
-}
-
-.fa-c::before {
- content: "\43";
-}
-
-.fa-tablet-button::before {
- content: "\f10a";
-}
-
-.fa-rectangle-history-circle-user::before {
- content: "\e4a4";
-}
-
-.fa-building-lock::before {
- content: "\e4d6";
-}
-
-.fa-chart-line-up::before {
- content: "\e0e5";
-}
-
-.fa-mailbox::before {
- content: "\f813";
-}
-
-.fa-truck-bolt::before {
- content: "\e3d0";
-}
-
-.fa-pizza-slice::before {
- content: "\f818";
-}
-
-.fa-money-bill-wave::before {
- content: "\f53a";
-}
-
-.fa-chart-area::before {
- content: "\f1fe";
-}
-
-.fa-area-chart::before {
- content: "\f1fe";
-}
-
-.fa-house-flag::before {
- content: "\e50d";
-}
-
-.fa-person-circle-minus::before {
- content: "\e540";
-}
-
-.fa-scalpel::before {
- content: "\f61d";
-}
-
-.fa-ban::before {
- content: "\f05e";
-}
-
-.fa-cancel::before {
- content: "\f05e";
-}
-
-.fa-bell-exclamation::before {
- content: "\f848";
-}
-
-.fa-circle-bookmark::before {
- content: "\e100";
-}
-
-.fa-bookmark-circle::before {
- content: "\e100";
-}
-
-.fa-egg-fried::before {
- content: "\f7fc";
-}
-
-.fa-face-weary::before {
- content: "\e3a1";
-}
-
-.fa-uniform-martial-arts::before {
- content: "\e3d1";
-}
-
-.fa-camera-rotate::before {
- content: "\e0d8";
-}
-
-.fa-sun-dust::before {
- content: "\f764";
-}
-
-.fa-comment-text::before {
- content: "\e14d";
-}
-
-.fa-spray-can-sparkles::before {
- content: "\f5d0";
-}
-
-.fa-air-freshener::before {
- content: "\f5d0";
-}
-
-.fa-signal-bars::before {
- content: "\f690";
-}
-
-.fa-signal-alt::before {
- content: "\f690";
-}
-
-.fa-signal-alt-4::before {
- content: "\f690";
-}
-
-.fa-signal-bars-strong::before {
- content: "\f690";
-}
-
-.fa-diamond-exclamation::before {
- content: "\e405";
-}
-
-.fa-star::before {
- content: "\f005";
-}
-
-.fa-dial-min::before {
- content: "\e161";
-}
-
-.fa-repeat::before {
- content: "\f363";
-}
-
-.fa-cross::before {
- content: "\f654";
-}
-
-.fa-page-caret-down::before {
- content: "\e429";
-}
-
-.fa-file-caret-down::before {
- content: "\e429";
-}
-
-.fa-box::before {
- content: "\f466";
-}
-
-.fa-venus-mars::before {
- content: "\f228";
-}
-
-.fa-clock-seven-thirty::before {
- content: "\e351";
-}
-
-.fa-arrow-pointer::before {
- content: "\f245";
-}
-
-.fa-mouse-pointer::before {
- content: "\f245";
-}
-
-.fa-clock-four-thirty::before {
- content: "\e34b";
-}
-
-.fa-signal-bars-good::before {
- content: "\f693";
-}
-
-.fa-signal-alt-3::before {
- content: "\f693";
-}
-
-.fa-cactus::before {
- content: "\f8a7";
-}
-
-.fa-maximize::before {
- content: "\f31e";
-}
-
-.fa-expand-arrows-alt::before {
- content: "\f31e";
-}
-
-.fa-charging-station::before {
- content: "\f5e7";
-}
-
-.fa-shapes::before {
- content: "\f61f";
-}
-
-.fa-triangle-circle-square::before {
- content: "\f61f";
-}
-
-.fa-plane-tail::before {
- content: "\e22c";
-}
-
-.fa-gauge-simple-max::before {
- content: "\f62b";
-}
-
-.fa-tachometer-fastest::before {
- content: "\f62b";
-}
-
-.fa-circle-u::before {
- content: "\e127";
-}
-
-.fa-shield-slash::before {
- content: "\e24b";
-}
-
-.fa-square-phone-hangup::before {
- content: "\e27a";
-}
-
-.fa-phone-square-down::before {
- content: "\e27a";
-}
-
-.fa-arrow-up-left::before {
- content: "\e09d";
-}
-
-.fa-transporter-1::before {
- content: "\e043";
-}
-
-.fa-peanuts::before {
- content: "\e431";
-}
-
-.fa-shuffle::before {
- content: "\f074";
-}
-
-.fa-random::before {
- content: "\f074";
-}
-
-.fa-person-running::before {
- content: "\f70c";
-}
-
-.fa-running::before {
- content: "\f70c";
-}
-
-.fa-mobile-retro::before {
- content: "\e527";
-}
-
-.fa-grip-lines-vertical::before {
- content: "\f7a5";
-}
-
-.fa-arrow-up-from-square::before {
- content: "\e09c";
-}
-
-.fa-file-dashed-line::before {
- content: "\f877";
-}
-
-.fa-page-break::before {
- content: "\f877";
-}
-
-.fa-bracket-curly-right::before {
- content: "\7d";
-}
-
-.fa-spider::before {
- content: "\f717";
-}
-
-.fa-clock-three::before {
- content: "\e356";
-}
-
-.fa-hands-bound::before {
- content: "\e4f9";
-}
-
-.fa-scalpel-line-dashed::before {
- content: "\f61e";
-}
-
-.fa-scalpel-path::before {
- content: "\f61e";
-}
-
-.fa-file-invoice-dollar::before {
- content: "\f571";
-}
-
-.fa-pipe-smoking::before {
- content: "\e3c4";
-}
-
-.fa-face-astonished::before {
- content: "\e36b";
-}
-
-.fa-window::before {
- content: "\f40e";
-}
-
-.fa-plane-circle-exclamation::before {
- content: "\e556";
-}
-
-.fa-ear::before {
- content: "\f5f0";
-}
-
-.fa-file-lock::before {
- content: "\e3a6";
-}
-
-.fa-diagram-venn::before {
- content: "\e15a";
-}
-
-.fa-x-ray::before {
- content: "\f497";
-}
-
-.fa-goal-net::before {
- content: "\e3ab";
-}
-
-.fa-coffin-cross::before {
- content: "\e051";
-}
-
-.fa-spell-check::before {
- content: "\f891";
-}
-
-.fa-location-xmark::before {
- content: "\f60e";
-}
-
-.fa-map-marker-times::before {
- content: "\f60e";
-}
-
-.fa-map-marker-xmark::before {
- content: "\f60e";
-}
-
-.fa-lasso::before {
- content: "\f8c8";
-}
-
-.fa-slash::before {
- content: "\f715";
-}
-
-.fa-person-to-portal::before {
- content: "\e022";
-}
-
-.fa-portal-enter::before {
- content: "\e022";
-}
-
-.fa-calendar-star::before {
- content: "\f736";
-}
-
-.fa-computer-mouse::before {
- content: "\f8cc";
-}
-
-.fa-mouse::before {
- content: "\f8cc";
-}
-
-.fa-arrow-right-to-bracket::before {
- content: "\f090";
-}
-
-.fa-sign-in::before {
- content: "\f090";
-}
-
-.fa-pegasus::before {
- content: "\f703";
-}
-
-.fa-files-medical::before {
- content: "\f7fd";
-}
-
-.fa-nfc-lock::before {
- content: "\e1f8";
-}
-
-.fa-person-ski-lift::before {
- content: "\f7c8";
-}
-
-.fa-ski-lift::before {
- content: "\f7c8";
-}
-
-.fa-square-6::before {
- content: "\e25b";
-}
-
-.fa-shop-slash::before {
- content: "\e070";
-}
-
-.fa-store-alt-slash::before {
- content: "\e070";
-}
-
-.fa-wind-turbine::before {
- content: "\f89b";
-}
-
-.fa-sliders-simple::before {
- content: "\e253";
-}
-
-.fa-badge-sheriff::before {
- content: "\f8a2";
-}
-
-.fa-server::before {
- content: "\f233";
-}
-
-.fa-virus-covid-slash::before {
- content: "\e4a9";
-}
-
-.fa-intersection::before {
- content: "\f668";
-}
-
-.fa-shop-lock::before {
- content: "\e4a5";
-}
-
-.fa-family::before {
- content: "\e300";
-}
-
-.fa-hourglass-start::before {
- content: "\f251";
-}
-
-.fa-hourglass-1::before {
- content: "\f251";
-}
-
-.fa-user-hair-buns::before {
- content: "\e3d3";
-}
-
-.fa-blender-phone::before {
- content: "\f6b6";
-}
-
-.fa-hourglass-clock::before {
- content: "\e41b";
-}
-
-.fa-person-seat-reclined::before {
- content: "\e21f";
-}
-
-.fa-paper-plane-top::before {
- content: "\e20a";
-}
-
-.fa-paper-plane-alt::before {
- content: "\e20a";
-}
-
-.fa-send::before {
- content: "\e20a";
-}
-
-.fa-message-arrow-up::before {
- content: "\e1dc";
-}
-
-.fa-comment-alt-arrow-up::before {
- content: "\e1dc";
-}
-
-.fa-lightbulb-exclamation::before {
- content: "\f671";
-}
-
-.fa-layer-minus::before {
- content: "\f5fe";
-}
-
-.fa-layer-group-minus::before {
- content: "\f5fe";
-}
-
-.fa-circle-e::before {
- content: "\e109";
-}
-
-.fa-building-wheat::before {
- content: "\e4db";
-}
-
-.fa-gauge-max::before {
- content: "\f626";
-}
-
-.fa-tachometer-alt-fastest::before {
- content: "\f626";
-}
-
-.fa-person-breastfeeding::before {
- content: "\e53a";
-}
-
-.fa-apostrophe::before {
- content: "\27";
-}
-
-.fa-fire-hydrant::before {
- content: "\e17f";
-}
-
-.fa-right-to-bracket::before {
- content: "\f2f6";
-}
-
-.fa-sign-in-alt::before {
- content: "\f2f6";
-}
-
-.fa-video-plus::before {
- content: "\f4e1";
-}
-
-.fa-square-right::before {
- content: "\f352";
-}
-
-.fa-arrow-alt-square-right::before {
- content: "\f352";
-}
-
-.fa-comment-smile::before {
- content: "\f4b4";
-}
-
-.fa-venus::before {
- content: "\f221";
-}
-
-.fa-passport::before {
- content: "\f5ab";
-}
-
-.fa-inbox-in::before {
- content: "\f310";
-}
-
-.fa-inbox-arrow-down::before {
- content: "\f310";
-}
-
-.fa-heart-pulse::before {
- content: "\f21e";
-}
-
-.fa-heartbeat::before {
- content: "\f21e";
-}
-
-.fa-circle-8::before {
- content: "\e0f5";
-}
-
-.fa-clouds-moon::before {
- content: "\f745";
-}
-
-.fa-clock-ten-thirty::before {
- content: "\e355";
-}
-
-.fa-people-carry-box::before {
- content: "\f4ce";
-}
-
-.fa-people-carry::before {
- content: "\f4ce";
-}
-
-.fa-folder-user::before {
- content: "\e18e";
-}
-
-.fa-trash-can-xmark::before {
- content: "\e2ae";
-}
-
-.fa-temperature-high::before {
- content: "\f769";
-}
-
-.fa-microchip::before {
- content: "\f2db";
-}
-
-.fa-left-long-to-line::before {
- content: "\e41e";
-}
-
-.fa-crown::before {
- content: "\f521";
-}
-
-.fa-weight-hanging::before {
- content: "\f5cd";
-}
-
-.fa-xmarks-lines::before {
- content: "\e59a";
-}
-
-.fa-file-prescription::before {
- content: "\f572";
-}
-
-.fa-calendar-range::before {
- content: "\e0d6";
-}
-
-.fa-flower-daffodil::before {
- content: "\f800";
-}
-
-.fa-hand-back-point-up::before {
- content: "\e1a2";
-}
-
-.fa-weight-scale::before {
- content: "\f496";
-}
-
-.fa-weight::before {
- content: "\f496";
-}
-
-.fa-star-exclamation::before {
- content: "\f2f3";
-}
-
-.fa-books::before {
- content: "\f5db";
-}
-
-.fa-user-group::before {
- content: "\f500";
-}
-
-.fa-user-friends::before {
- content: "\f500";
-}
-
-.fa-arrow-up-a-z::before {
- content: "\f15e";
-}
-
-.fa-sort-alpha-up::before {
- content: "\f15e";
-}
-
-.fa-layer-plus::before {
- content: "\f5ff";
-}
-
-.fa-layer-group-plus::before {
- content: "\f5ff";
-}
-
-.fa-play-pause::before {
- content: "\e22f";
-}
-
-.fa-block-question::before {
- content: "\e3dd";
-}
-
-.fa-snooze::before {
- content: "\f880";
-}
-
-.fa-zzz::before {
- content: "\f880";
-}
-
-.fa-scanner-image::before {
- content: "\f8f3";
-}
-
-.fa-tv-retro::before {
- content: "\f401";
-}
-
-.fa-square-t::before {
- content: "\e280";
-}
-
-.fa-farm::before {
- content: "\f864";
-}
-
-.fa-barn-silo::before {
- content: "\f864";
-}
-
-.fa-chess-knight::before {
- content: "\f441";
-}
-
-.fa-bars-sort::before {
- content: "\e0ae";
-}
-
-.fa-pallet-boxes::before {
- content: "\f483";
-}
-
-.fa-palette-boxes::before {
- content: "\f483";
-}
-
-.fa-pallet-alt::before {
- content: "\f483";
-}
-
-.fa-face-laugh-squint::before {
- content: "\f59b";
-}
-
-.fa-laugh-squint::before {
- content: "\f59b";
-}
-
-.fa-code-simple::before {
- content: "\e13d";
-}
-
-.fa-bolt-slash::before {
- content: "\e0b8";
-}
-
-.fa-panel-fire::before {
- content: "\e42f";
-}
-
-.fa-binary-circle-check::before {
- content: "\e33c";
-}
-
-.fa-comment-minus::before {
- content: "\f4b1";
-}
-
-.fa-burrito::before {
- content: "\f7ed";
-}
-
-.fa-violin::before {
- content: "\f8ed";
-}
-
-.fa-objects-column::before {
- content: "\e3c1";
-}
-
-.fa-square-chevron-down::before {
- content: "\f329";
-}
-
-.fa-chevron-square-down::before {
- content: "\f329";
-}
-
-.fa-comment-plus::before {
- content: "\f4b2";
-}
-
-.fa-triangle-instrument::before {
- content: "\f8e2";
-}
-
-.fa-triangle-music::before {
- content: "\f8e2";
-}
-
-.fa-wheelchair::before {
- content: "\f193";
-}
-
-.fa-user-pilot-tie::before {
- content: "\e2c1";
-}
-
-.fa-piano-keyboard::before {
- content: "\f8d5";
-}
-
-.fa-bed-empty::before {
- content: "\f8f9";
-}
-
-.fa-circle-arrow-up::before {
- content: "\f0aa";
-}
-
-.fa-arrow-circle-up::before {
- content: "\f0aa";
-}
-
-.fa-toggle-on::before {
- content: "\f205";
-}
-
-.fa-rectangle-vertical::before {
- content: "\f2fb";
-}
-
-.fa-rectangle-portrait::before {
- content: "\f2fb";
-}
-
-.fa-person-walking::before {
- content: "\f554";
-}
-
-.fa-walking::before {
- content: "\f554";
-}
-
-.fa-l::before {
- content: "\4c";
-}
-
-.fa-signal-stream::before {
- content: "\f8dd";
-}
-
-.fa-down-to-bracket::before {
- content: "\e4e7";
-}
-
-.fa-circle-z::before {
- content: "\e130";
-}
-
-.fa-stars::before {
- content: "\f762";
-}
-
-.fa-fire::before {
- content: "\f06d";
-}
-
-.fa-bed-pulse::before {
- content: "\f487";
-}
-
-.fa-procedures::before {
- content: "\f487";
-}
-
-.fa-house-day::before {
- content: "\e00e";
-}
-
-.fa-shuttle-space::before {
- content: "\f197";
-}
-
-.fa-space-shuttle::before {
- content: "\f197";
-}
-
-.fa-shirt-long-sleeve::before {
- content: "\e3c7";
-}
-
-.fa-chart-pie-simple::before {
- content: "\f64e";
-}
-
-.fa-chart-pie-alt::before {
- content: "\f64e";
-}
-
-.fa-face-laugh::before {
- content: "\f599";
-}
-
-.fa-laugh::before {
- content: "\f599";
-}
-
-.fa-folder-open::before {
- content: "\f07c";
-}
-
-.fa-album-collection-circle-user::before {
- content: "\e48f";
-}
-
-.fa-candy::before {
- content: "\e3e7";
-}
-
-.fa-bowl-hot::before {
- content: "\f823";
-}
-
-.fa-soup::before {
- content: "\f823";
-}
-
-.fa-flatbread::before {
- content: "\e40b";
-}
-
-.fa-heart-circle-plus::before {
- content: "\e500";
-}
-
-.fa-code-fork::before {
- content: "\e13b";
-}
-
-.fa-city::before {
- content: "\f64f";
-}
-
-.fa-signal-bars-weak::before {
- content: "\f691";
-}
-
-.fa-signal-alt-1::before {
- content: "\f691";
-}
-
-.fa-microphone-lines::before {
- content: "\f3c9";
-}
-
-.fa-microphone-alt::before {
- content: "\f3c9";
-}
-
-.fa-clock-twelve::before {
- content: "\e358";
-}
-
-.fa-pepper-hot::before {
- content: "\f816";
-}
-
-.fa-citrus-slice::before {
- content: "\e2f5";
-}
-
-.fa-sheep::before {
- content: "\f711";
-}
-
-.fa-unlock::before {
- content: "\f09c";
-}
-
-.fa-colon-sign::before {
- content: "\e140";
-}
-
-.fa-headset::before {
- content: "\f590";
-}
-
-.fa-badger-honey::before {
- content: "\f6b4";
-}
-
-.fa-h4::before {
- content: "\f86a";
-}
-
-.fa-store-slash::before {
- content: "\e071";
-}
-
-.fa-road-circle-xmark::before {
- content: "\e566";
-}
-
-.fa-signal-slash::before {
- content: "\f695";
-}
-
-.fa-user-minus::before {
- content: "\f503";
-}
-
-.fa-mars-stroke-up::before {
- content: "\f22a";
-}
-
-.fa-mars-stroke-v::before {
- content: "\f22a";
-}
-
-.fa-champagne-glasses::before {
- content: "\f79f";
-}
-
-.fa-glass-cheers::before {
- content: "\f79f";
-}
-
-.fa-taco::before {
- content: "\f826";
-}
-
-.fa-hexagon-plus::before {
- content: "\f300";
-}
-
-.fa-plus-hexagon::before {
- content: "\f300";
-}
-
-.fa-clipboard::before {
- content: "\f328";
-}
-
-.fa-house-circle-exclamation::before {
- content: "\e50a";
-}
-
-.fa-file-arrow-up::before {
- content: "\f574";
-}
-
-.fa-file-upload::before {
- content: "\f574";
-}
-
-.fa-wifi::before {
- content: "\f1eb";
-}
-
-.fa-wifi-3::before {
- content: "\f1eb";
-}
-
-.fa-wifi-strong::before {
- content: "\f1eb";
-}
-
-.fa-messages::before {
- content: "\f4b6";
-}
-
-.fa-comments-alt::before {
- content: "\f4b6";
-}
-
-.fa-bath::before {
- content: "\f2cd";
-}
-
-.fa-bathtub::before {
- content: "\f2cd";
-}
-
-.fa-umbrella-simple::before {
- content: "\e2bc";
-}
-
-.fa-umbrella-alt::before {
- content: "\e2bc";
-}
-
-.fa-rectangle-history-circle-plus::before {
- content: "\e4a3";
-}
-
-.fa-underline::before {
- content: "\f0cd";
-}
-
-.fa-prescription-bottle-pill::before {
- content: "\e5c0";
-}
-
-.fa-user-pen::before {
- content: "\f4ff";
-}
-
-.fa-user-edit::before {
- content: "\f4ff";
-}
-
-.fa-binary-slash::before {
- content: "\e33e";
-}
-
-.fa-square-o::before {
- content: "\e278";
-}
-
-.fa-signature::before {
- content: "\f5b7";
-}
-
-.fa-stroopwafel::before {
- content: "\f551";
-}
-
-.fa-bold::before {
- content: "\f032";
-}
-
-.fa-anchor-lock::before {
- content: "\e4ad";
-}
-
-.fa-building-ngo::before {
- content: "\e4d7";
-}
-
-.fa-transporter-3::before {
- content: "\e045";
-}
-
-.fa-engine-warning::before {
- content: "\f5f2";
-}
-
-.fa-engine-exclamation::before {
- content: "\f5f2";
-}
-
-.fa-circle-down-right::before {
- content: "\e108";
-}
-
-.fa-square-k::before {
- content: "\e274";
-}
-
-.fa-manat-sign::before {
- content: "\e1d5";
-}
-
-.fa-money-check-pen::before {
- content: "\f872";
-}
-
-.fa-money-check-edit::before {
- content: "\f872";
-}
-
-.fa-not-equal::before {
- content: "\f53e";
-}
-
-.fa-border-top-left::before {
- content: "\f853";
-}
-
-.fa-border-style::before {
- content: "\f853";
-}
-
-.fa-map-location-dot::before {
- content: "\f5a0";
-}
-
-.fa-map-marked-alt::before {
- content: "\f5a0";
-}
-
-.fa-tilde::before {
- content: "\7e";
-}
-
-.fa-jedi::before {
- content: "\f669";
-}
-
-.fa-square-poll-vertical::before {
- content: "\f681";
-}
-
-.fa-poll::before {
- content: "\f681";
-}
-
-.fa-arrow-down-square-triangle::before {
- content: "\f889";
-}
-
-.fa-sort-shapes-down-alt::before {
- content: "\f889";
-}
-
-.fa-mug-hot::before {
- content: "\f7b6";
-}
-
-.fa-dog-leashed::before {
- content: "\f6d4";
-}
-
-.fa-car-battery::before {
- content: "\f5df";
-}
-
-.fa-battery-car::before {
- content: "\f5df";
-}
-
-.fa-face-downcast-sweat::before {
- content: "\e371";
-}
-
-.fa-mailbox-flag-up::before {
- content: "\e5bb";
-}
-
-.fa-memo-circle-info::before {
- content: "\e49a";
-}
-
-.fa-gift::before {
- content: "\f06b";
-}
-
-.fa-dice-two::before {
- content: "\f528";
-}
-
-.fa-volume::before {
- content: "\f6a8";
-}
-
-.fa-volume-medium::before {
- content: "\f6a8";
-}
-
-.fa-transporter-5::before {
- content: "\e2a6";
-}
-
-.fa-gauge-circle-bolt::before {
- content: "\e496";
-}
-
-.fa-coin-front::before {
- content: "\e3fc";
-}
-
-.fa-file-slash::before {
- content: "\e3a7";
-}
-
-.fa-message-arrow-up-right::before {
- content: "\e1dd";
-}
-
-.fa-treasure-chest::before {
- content: "\f723";
-}
-
-.fa-chess-queen::before {
- content: "\f445";
-}
-
-.fa-paintbrush-fine::before {
- content: "\f5a9";
-}
-
-.fa-paint-brush-alt::before {
- content: "\f5a9";
-}
-
-.fa-paint-brush-fine::before {
- content: "\f5a9";
-}
-
-.fa-paintbrush-alt::before {
- content: "\f5a9";
-}
-
-.fa-glasses::before {
- content: "\f530";
-}
-
-.fa-hood-cloak::before {
- content: "\f6ef";
-}
-
-.fa-square-quote::before {
- content: "\e329";
-}
-
-.fa-up-left::before {
- content: "\e2bd";
-}
-
-.fa-bring-front::before {
- content: "\f857";
-}
-
-.fa-chess-board::before {
- content: "\f43c";
-}
-
-.fa-burger-cheese::before {
- content: "\f7f1";
-}
-
-.fa-cheeseburger::before {
- content: "\f7f1";
-}
-
-.fa-building-circle-check::before {
- content: "\e4d2";
-}
-
-.fa-repeat-1::before {
- content: "\f365";
-}
-
-.fa-arrow-down-to-line::before {
- content: "\f33d";
-}
-
-.fa-arrow-to-bottom::before {
- content: "\f33d";
-}
-
-.fa-grid-5::before {
- content: "\e199";
-}
-
-.fa-right-long-to-line::before {
- content: "\e444";
-}
-
-.fa-person-chalkboard::before {
- content: "\e53d";
-}
-
-.fa-mars-stroke-right::before {
- content: "\f22b";
-}
-
-.fa-mars-stroke-h::before {
- content: "\f22b";
-}
-
-.fa-hand-back-fist::before {
- content: "\f255";
-}
-
-.fa-hand-rock::before {
- content: "\f255";
-}
-
-.fa-tally::before {
- content: "\f69c";
-}
-
-.fa-tally-5::before {
- content: "\f69c";
-}
-
-.fa-square-caret-up::before {
- content: "\f151";
-}
-
-.fa-caret-square-up::before {
- content: "\f151";
-}
-
-.fa-cloud-showers-water::before {
- content: "\e4e4";
-}
-
-.fa-chart-bar::before {
- content: "\f080";
-}
-
-.fa-bar-chart::before {
- content: "\f080";
-}
-
-.fa-hands-bubbles::before {
- content: "\e05e";
-}
-
-.fa-hands-wash::before {
- content: "\e05e";
-}
-
-.fa-less-than-equal::before {
- content: "\f537";
-}
-
-.fa-train::before {
- content: "\f238";
-}
-
-.fa-up-from-dotted-line::before {
- content: "\e456";
-}
-
-.fa-eye-low-vision::before {
- content: "\f2a8";
-}
-
-.fa-low-vision::before {
- content: "\f2a8";
-}
-
-.fa-traffic-light-go::before {
- content: "\f638";
-}
-
-.fa-face-exhaling::before {
- content: "\e480";
-}
-
-.fa-sensor-fire::before {
- content: "\e02a";
-}
-
-.fa-user-unlock::before {
- content: "\e058";
-}
-
-.fa-hexagon-divide::before {
- content: "\e1ad";
-}
-
-.fa-00::before {
- content: "\e467";
-}
-
-.fa-crow::before {
- content: "\f520";
-}
-
-.fa-cassette-betamax::before {
- content: "\f8a4";
-}
-
-.fa-betamax::before {
- content: "\f8a4";
-}
-
-.fa-sailboat::before {
- content: "\e445";
-}
-
-.fa-window-restore::before {
- content: "\f2d2";
-}
-
-.fa-nfc-magnifying-glass::before {
- content: "\e1f9";
-}
-
-.fa-file-binary::before {
- content: "\e175";
-}
-
-.fa-circle-v::before {
- content: "\e12a";
-}
-
-.fa-square-plus::before {
- content: "\f0fe";
-}
-
-.fa-plus-square::before {
- content: "\f0fe";
-}
-
-.fa-bowl-scoops::before {
- content: "\e3df";
-}
-
-.fa-mistletoe::before {
- content: "\f7b4";
-}
-
-.fa-custard::before {
- content: "\e403";
-}
-
-.fa-lacrosse-stick::before {
- content: "\e3b5";
-}
-
-.fa-hockey-mask::before {
- content: "\f6ee";
-}
-
-.fa-sunrise::before {
- content: "\f766";
-}
-
-.fa-panel-ews::before {
- content: "\e42e";
-}
-
-.fa-torii-gate::before {
- content: "\f6a1";
-}
-
-.fa-cloud-exclamation::before {
- content: "\e491";
-}
-
-.fa-message-lines::before {
- content: "\f4a6";
-}
-
-.fa-comment-alt-lines::before {
- content: "\f4a6";
-}
-
-.fa-frog::before {
- content: "\f52e";
-}
-
-.fa-bucket::before {
- content: "\e4cf";
-}
-
-.fa-floppy-disk-pen::before {
- content: "\e182";
-}
-
-.fa-image::before {
- content: "\f03e";
-}
-
-.fa-window-frame::before {
- content: "\e04f";
-}
-
-.fa-microphone::before {
- content: "\f130";
-}
-
-.fa-cow::before {
- content: "\f6c8";
-}
-
-.fa-square-ring::before {
- content: "\e44f";
-}
-
-.fa-down-from-line::before {
- content: "\f349";
-}
-
-.fa-arrow-alt-from-top::before {
- content: "\f349";
-}
-
-.fa-caret-up::before {
- content: "\f0d8";
-}
-
-.fa-shield-xmark::before {
- content: "\e24c";
-}
-
-.fa-shield-times::before {
- content: "\e24c";
-}
-
-.fa-screwdriver::before {
- content: "\f54a";
-}
-
-.fa-circle-sort-down::before {
- content: "\e031";
-}
-
-.fa-sort-circle-down::before {
- content: "\e031";
-}
-
-.fa-folder-closed::before {
- content: "\e185";
-}
-
-.fa-house-tsunami::before {
- content: "\e515";
-}
-
-.fa-square-nfi::before {
- content: "\e576";
-}
-
-.fa-forklift::before {
- content: "\f47a";
-}
-
-.fa-arrow-up-from-ground-water::before {
- content: "\e4b5";
-}
-
-.fa-bracket-square-right::before {
- content: "\5d";
-}
-
-.fa-martini-glass::before {
- content: "\f57b";
-}
-
-.fa-glass-martini-alt::before {
- content: "\f57b";
-}
-
-.fa-rotate-left::before {
- content: "\f2ea";
-}
-
-.fa-rotate-back::before {
- content: "\f2ea";
-}
-
-.fa-rotate-backward::before {
- content: "\f2ea";
-}
-
-.fa-undo-alt::before {
- content: "\f2ea";
-}
-
-.fa-table-columns::before {
- content: "\f0db";
-}
-
-.fa-columns::before {
- content: "\f0db";
-}
-
-.fa-square-a::before {
- content: "\e25f";
-}
-
-.fa-tick::before {
- content: "\e32f";
-}
-
-.fa-lemon::before {
- content: "\f094";
-}
-
-.fa-head-side-mask::before {
- content: "\e063";
-}
-
-.fa-handshake::before {
- content: "\f2b5";
-}
-
-.fa-gem::before {
- content: "\f3a5";
-}
-
-.fa-dolly::before {
- content: "\f472";
-}
-
-.fa-dolly-box::before {
- content: "\f472";
-}
-
-.fa-smoking::before {
- content: "\f48d";
-}
-
-.fa-minimize::before {
- content: "\f78c";
-}
-
-.fa-compress-arrows-alt::before {
- content: "\f78c";
-}
-
-.fa-refrigerator::before {
- content: "\e026";
-}
-
-.fa-monument::before {
- content: "\f5a6";
-}
-
-.fa-octagon-xmark::before {
- content: "\f2f0";
-}
-
-.fa-times-octagon::before {
- content: "\f2f0";
-}
-
-.fa-xmark-octagon::before {
- content: "\f2f0";
-}
-
-.fa-align-slash::before {
- content: "\f846";
-}
-
-.fa-snowplow::before {
- content: "\f7d2";
-}
-
-.fa-angles-right::before {
- content: "\f101";
-}
-
-.fa-angle-double-right::before {
- content: "\f101";
-}
-
-.fa-truck-ramp-couch::before {
- content: "\f4dd";
-}
-
-.fa-truck-couch::before {
- content: "\f4dd";
-}
-
-.fa-cannabis::before {
- content: "\f55f";
-}
-
-.fa-circle-play::before {
- content: "\f144";
-}
-
-.fa-play-circle::before {
- content: "\f144";
-}
-
-.fa-arrow-up-right-and-arrow-down-left-from-center::before {
- content: "\e0a0";
-}
-
-.fa-tablets::before {
- content: "\f490";
-}
-
-.fa-360-degrees::before {
- content: "\e2dc";
-}
-
-.fa-ethernet::before {
- content: "\f796";
-}
-
-.fa-euro-sign::before {
- content: "\f153";
-}
-
-.fa-eur::before {
- content: "\f153";
-}
-
-.fa-euro::before {
- content: "\f153";
-}
-
-.fa-chair::before {
- content: "\f6c0";
-}
-
-.fa-circle-check::before {
- content: "\f058";
-}
-
-.fa-check-circle::before {
- content: "\f058";
-}
-
-.fa-square-dashed-circle-plus::before {
- content: "\e5c2";
-}
-
-.fa-money-simple-from-bracket::before {
- content: "\e313";
-}
-
-.fa-bat::before {
- content: "\f6b5";
-}
-
-.fa-circle-stop::before {
- content: "\f28d";
-}
-
-.fa-stop-circle::before {
- content: "\f28d";
-}
-
-.fa-head-side-headphones::before {
- content: "\f8c2";
-}
-
-.fa-phone-rotary::before {
- content: "\f8d3";
-}
-
-.fa-compass-drafting::before {
- content: "\f568";
-}
-
-.fa-drafting-compass::before {
- content: "\f568";
-}
-
-.fa-plate-wheat::before {
- content: "\e55a";
-}
-
-.fa-calendar-circle-minus::before {
- content: "\e46f";
-}
-
-.fa-chopsticks::before {
- content: "\e3f7";
-}
-
-.fa-car-wrench::before {
- content: "\f5e3";
-}
-
-.fa-car-mechanic::before {
- content: "\f5e3";
-}
-
-.fa-icicles::before {
- content: "\f7ad";
-}
-
-.fa-person-shelter::before {
- content: "\e54f";
-}
-
-.fa-neuter::before {
- content: "\f22c";
-}
-
-.fa-id-badge::before {
- content: "\f2c1";
-}
-
-.fa-kazoo::before {
- content: "\f8c7";
-}
-
-.fa-marker::before {
- content: "\f5a1";
-}
-
-.fa-face-laugh-beam::before {
- content: "\f59a";
-}
-
-.fa-laugh-beam::before {
- content: "\f59a";
-}
-
-.fa-square-arrow-down-left::before {
- content: "\e261";
-}
-
-.fa-battery-bolt::before {
- content: "\f376";
-}
-
-.fa-tree-large::before {
- content: "\f7dd";
-}
-
-.fa-helicopter-symbol::before {
- content: "\e502";
-}
-
-.fa-aperture::before {
- content: "\e2df";
-}
-
-.fa-universal-access::before {
- content: "\f29a";
-}
-
-.fa-file-magnifying-glass::before {
- content: "\f865";
-}
-
-.fa-file-search::before {
- content: "\f865";
-}
-
-.fa-up-right::before {
- content: "\e2be";
-}
-
-.fa-circle-chevron-up::before {
- content: "\f139";
-}
-
-.fa-chevron-circle-up::before {
- content: "\f139";
-}
-
-.fa-user-police::before {
- content: "\e333";
-}
-
-.fa-lari-sign::before {
- content: "\e1c8";
-}
-
-.fa-volcano::before {
- content: "\f770";
-}
-
-.fa-teddy-bear::before {
- content: "\e3cf";
-}
-
-.fa-stocking::before {
- content: "\f7d5";
-}
-
-.fa-person-walking-dashed-line-arrow-right::before {
- content: "\e553";
-}
-
-.fa-image-slash::before {
- content: "\e1b7";
-}
-
-.fa-mask-snorkel::before {
- content: "\e3b7";
-}
-
-.fa-smoke::before {
- content: "\f760";
-}
-
-.fa-sterling-sign::before {
- content: "\f154";
-}
-
-.fa-gbp::before {
- content: "\f154";
-}
-
-.fa-pound-sign::before {
- content: "\f154";
-}
-
-.fa-battery-exclamation::before {
- content: "\e0b0";
-}
-
-.fa-viruses::before {
- content: "\e076";
-}
-
-.fa-square-person-confined::before {
- content: "\e577";
-}
-
-.fa-user-tie::before {
- content: "\f508";
-}
-
-.fa-arrow-down-long::before {
- content: "\f175";
-}
-
-.fa-long-arrow-down::before {
- content: "\f175";
-}
-
-.fa-tent-arrow-down-to-line::before {
- content: "\e57e";
-}
-
-.fa-certificate::before {
- content: "\f0a3";
-}
-
-.fa-crystal-ball::before {
- content: "\e362";
-}
-
-.fa-reply-all::before {
- content: "\f122";
-}
-
-.fa-mail-reply-all::before {
- content: "\f122";
-}
-
-.fa-suitcase::before {
- content: "\f0f2";
-}
-
-.fa-person-skating::before {
- content: "\f7c5";
-}
-
-.fa-skating::before {
- content: "\f7c5";
-}
-
-.fa-star-shooting::before {
- content: "\e036";
-}
-
-.fa-binary-lock::before {
- content: "\e33d";
-}
-
-.fa-filter-circle-dollar::before {
- content: "\f662";
-}
-
-.fa-funnel-dollar::before {
- content: "\f662";
-}
-
-.fa-camera-retro::before {
- content: "\f083";
-}
-
-.fa-circle-arrow-down::before {
- content: "\f0ab";
-}
-
-.fa-arrow-circle-down::before {
- content: "\f0ab";
-}
-
-.fa-comment-pen::before {
- content: "\f4ae";
-}
-
-.fa-comment-edit::before {
- content: "\f4ae";
-}
-
-.fa-file-import::before {
- content: "\f56f";
-}
-
-.fa-arrow-right-to-file::before {
- content: "\f56f";
-}
-
-.fa-banjo::before {
- content: "\f8a3";
-}
-
-.fa-square-arrow-up-right::before {
- content: "\f14c";
-}
-
-.fa-external-link-square::before {
- content: "\f14c";
-}
-
-.fa-light-emergency-on::before {
- content: "\e420";
-}
-
-.fa-kerning::before {
- content: "\f86f";
-}
-
-.fa-box-open::before {
- content: "\f49e";
-}
-
-.fa-square-f::before {
- content: "\e270";
-}
-
-.fa-scroll::before {
- content: "\f70e";
-}
-
-.fa-spa::before {
- content: "\f5bb";
-}
-
-.fa-arrow-left-from-line::before {
- content: "\f344";
-}
-
-.fa-arrow-from-right::before {
- content: "\f344";
-}
-
-.fa-strawberry::before {
- content: "\e32b";
-}
-
-.fa-location-pin-lock::before {
- content: "\e51f";
-}
-
-.fa-pause::before {
- content: "\f04c";
-}
-
-.fa-clock-eight-thirty::before {
- content: "\e346";
-}
-
-.fa-plane-engines::before {
- content: "\f3de";
-}
-
-.fa-plane-alt::before {
- content: "\f3de";
-}
-
-.fa-hill-avalanche::before {
- content: "\e507";
-}
-
-.fa-temperature-empty::before {
- content: "\f2cb";
-}
-
-.fa-temperature-0::before {
- content: "\f2cb";
-}
-
-.fa-thermometer-0::before {
- content: "\f2cb";
-}
-
-.fa-thermometer-empty::before {
- content: "\f2cb";
-}
-
-.fa-bomb::before {
- content: "\f1e2";
-}
-
-.fa-gauge-low::before {
- content: "\f627";
-}
-
-.fa-tachometer-alt-slow::before {
- content: "\f627";
-}
-
-.fa-registered::before {
- content: "\f25d";
-}
-
-.fa-trash-can-plus::before {
- content: "\e2ac";
-}
-
-.fa-address-card::before {
- content: "\f2bb";
-}
-
-.fa-contact-card::before {
- content: "\f2bb";
-}
-
-.fa-vcard::before {
- content: "\f2bb";
-}
-
-.fa-scale-unbalanced-flip::before {
- content: "\f516";
-}
-
-.fa-balance-scale-right::before {
- content: "\f516";
-}
-
-.fa-globe-snow::before {
- content: "\f7a3";
-}
-
-.fa-subscript::before {
- content: "\f12c";
-}
-
-.fa-diamond-turn-right::before {
- content: "\f5eb";
-}
-
-.fa-directions::before {
- content: "\f5eb";
-}
-
-.fa-integral::before {
- content: "\f667";
-}
-
-.fa-burst::before {
- content: "\e4dc";
-}
-
-.fa-house-laptop::before {
- content: "\e066";
-}
-
-.fa-laptop-house::before {
- content: "\e066";
-}
-
-.fa-face-tired::before {
- content: "\f5c8";
-}
-
-.fa-tired::before {
- content: "\f5c8";
-}
-
-.fa-money-bills::before {
- content: "\e1f3";
-}
-
-.fa-blinds-raised::before {
- content: "\f8fd";
-}
-
-.fa-smog::before {
- content: "\f75f";
-}
-
-.fa-ufo-beam::before {
- content: "\e048";
-}
-
-.fa-circle-caret-up::before {
- content: "\f331";
-}
-
-.fa-caret-circle-up::before {
- content: "\f331";
-}
-
-.fa-user-vneck-hair-long::before {
- content: "\e463";
-}
-
-.fa-square-a-lock::before {
- content: "\e44d";
-}
-
-.fa-crutch::before {
- content: "\f7f7";
-}
-
-.fa-gas-pump-slash::before {
- content: "\f5f4";
-}
-
-.fa-cloud-arrow-up::before {
- content: "\f0ee";
-}
-
-.fa-cloud-upload::before {
- content: "\f0ee";
-}
-
-.fa-cloud-upload-alt::before {
- content: "\f0ee";
-}
-
-.fa-palette::before {
- content: "\f53f";
-}
-
-.fa-transporter-4::before {
- content: "\e2a5";
-}
-
-.fa-objects-align-right::before {
- content: "\e3bf";
-}
-
-.fa-arrows-turn-right::before {
- content: "\e4c0";
-}
-
-.fa-vest::before {
- content: "\e085";
-}
-
-.fa-pig::before {
- content: "\f706";
-}
-
-.fa-inbox-full::before {
- content: "\e1ba";
-}
-
-.fa-circle-envelope::before {
- content: "\e10c";
-}
-
-.fa-envelope-circle::before {
- content: "\e10c";
-}
-
-.fa-triangle-person-digging::before {
- content: "\f85d";
-}
-
-.fa-construction::before {
- content: "\f85d";
-}
-
-.fa-ferry::before {
- content: "\e4ea";
-}
-
-.fa-bullseye-arrow::before {
- content: "\f648";
-}
-
-.fa-arrows-down-to-people::before {
- content: "\e4b9";
-}
-
-.fa-seedling::before {
- content: "\f4d8";
-}
-
-.fa-sprout::before {
- content: "\f4d8";
-}
-
-.fa-clock-seven::before {
- content: "\e350";
-}
-
-.fa-left-right::before {
- content: "\f337";
-}
-
-.fa-arrows-alt-h::before {
- content: "\f337";
-}
-
-.fa-boxes-packing::before {
- content: "\e4c7";
-}
-
-.fa-circle-arrow-left::before {
- content: "\f0a8";
-}
-
-.fa-arrow-circle-left::before {
- content: "\f0a8";
-}
-
-.fa-flashlight::before {
- content: "\f8b8";
-}
-
-.fa-group-arrows-rotate::before {
- content: "\e4f6";
-}
-
-.fa-bowl-food::before {
- content: "\e4c6";
-}
-
-.fa-square-9::before {
- content: "\e25e";
-}
-
-.fa-candy-cane::before {
- content: "\f786";
-}
-
-.fa-arrow-down-wide-short::before {
- content: "\f160";
-}
-
-.fa-sort-amount-asc::before {
- content: "\f160";
-}
-
-.fa-sort-amount-down::before {
- content: "\f160";
-}
-
-.fa-square-dollar::before {
- content: "\f2e9";
-}
-
-.fa-dollar-square::before {
- content: "\f2e9";
-}
-
-.fa-usd-square::before {
- content: "\f2e9";
-}
-
-.fa-phone-arrow-right::before {
- content: "\e5be";
-}
-
-.fa-hand-holding-seedling::before {
- content: "\f4bf";
-}
-
-.fa-message-check::before {
- content: "\f4a2";
-}
-
-.fa-comment-alt-check::before {
- content: "\f4a2";
-}
-
-.fa-cloud-bolt::before {
- content: "\f76c";
-}
-
-.fa-thunderstorm::before {
- content: "\f76c";
-}
-
-.fa-text-slash::before {
- content: "\f87d";
-}
-
-.fa-remove-format::before {
- content: "\f87d";
-}
-
-.fa-watch::before {
- content: "\f2e1";
-}
-
-.fa-circle-down-left::before {
- content: "\e107";
-}
-
-.fa-text::before {
- content: "\f893";
-}
-
-.fa-projector::before {
- content: "\f8d6";
-}
-
-.fa-face-smile-wink::before {
- content: "\f4da";
-}
-
-.fa-smile-wink::before {
- content: "\f4da";
-}
-
-.fa-tombstone-blank::before {
- content: "\f721";
-}
-
-.fa-tombstone-alt::before {
- content: "\f721";
-}
-
-.fa-chess-king-piece::before {
- content: "\f440";
-}
-
-.fa-chess-king-alt::before {
- content: "\f440";
-}
-
-.fa-circle-6::before {
- content: "\e0f3";
-}
-
-.fa-left::before {
- content: "\f355";
-}
-
-.fa-arrow-alt-left::before {
- content: "\f355";
-}
-
-.fa-file-word::before {
- content: "\f1c2";
-}
-
-.fa-file-powerpoint::before {
- content: "\f1c4";
-}
-
-.fa-square-down::before {
- content: "\f350";
-}
-
-.fa-arrow-alt-square-down::before {
- content: "\f350";
-}
-
-.fa-objects-align-center-vertical::before {
- content: "\e3bd";
-}
-
-.fa-arrows-left-right::before {
- content: "\f07e";
-}
-
-.fa-arrows-h::before {
- content: "\f07e";
-}
-
-.fa-house-lock::before {
- content: "\e510";
-}
-
-.fa-cloud-arrow-down::before {
- content: "\f0ed";
-}
-
-.fa-cloud-download::before {
- content: "\f0ed";
-}
-
-.fa-cloud-download-alt::before {
- content: "\f0ed";
-}
-
-.fa-wreath::before {
- content: "\f7e2";
-}
-
-.fa-children::before {
- content: "\e4e1";
-}
-
-.fa-meter-droplet::before {
- content: "\e1ea";
-}
-
-.fa-chalkboard::before {
- content: "\f51b";
-}
-
-.fa-blackboard::before {
- content: "\f51b";
-}
-
-.fa-user-large-slash::before {
- content: "\f4fa";
-}
-
-.fa-user-alt-slash::before {
- content: "\f4fa";
-}
-
-.fa-signal-strong::before {
- content: "\f68f";
-}
-
-.fa-signal-4::before {
- content: "\f68f";
-}
-
-.fa-lollipop::before {
- content: "\e424";
-}
-
-.fa-lollypop::before {
- content: "\e424";
-}
-
-.fa-list-tree::before {
- content: "\e1d2";
-}
-
-.fa-envelope-open::before {
- content: "\f2b6";
-}
-
-.fa-draw-circle::before {
- content: "\f5ed";
-}
-
-.fa-cat-space::before {
- content: "\e001";
-}
-
-.fa-handshake-simple-slash::before {
- content: "\e05f";
-}
-
-.fa-handshake-alt-slash::before {
- content: "\e05f";
-}
-
-.fa-rabbit-running::before {
- content: "\f709";
-}
-
-.fa-rabbit-fast::before {
- content: "\f709";
-}
-
-.fa-memo-pad::before {
- content: "\e1da";
-}
-
-.fa-mattress-pillow::before {
- content: "\e525";
-}
-
-.fa-alarm-plus::before {
- content: "\f844";
-}
-
-.fa-alicorn::before {
- content: "\f6b0";
-}
-
-.fa-comment-question::before {
- content: "\e14b";
-}
-
-.fa-gingerbread-man::before {
- content: "\f79d";
-}
-
-.fa-guarani-sign::before {
- content: "\e19a";
-}
-
-.fa-burger-fries::before {
- content: "\e0cd";
-}
-
-.fa-mug-tea::before {
- content: "\f875";
-}
-
-.fa-border-top::before {
- content: "\f855";
-}
-
-.fa-arrows-rotate::before {
- content: "\f021";
-}
-
-.fa-refresh::before {
- content: "\f021";
-}
-
-.fa-sync::before {
- content: "\f021";
-}
-
-.fa-circle-book-open::before {
- content: "\e0ff";
-}
-
-.fa-book-circle::before {
- content: "\e0ff";
-}
-
-.fa-arrows-to-dotted-line::before {
- content: "\e0a6";
-}
-
-.fa-fire-extinguisher::before {
- content: "\f134";
-}
-
-.fa-garage-open::before {
- content: "\e00b";
-}
-
-.fa-shelves-empty::before {
- content: "\e246";
-}
-
-.fa-cruzeiro-sign::before {
- content: "\e152";
-}
-
-.fa-watch-apple::before {
- content: "\e2cb";
-}
-
-.fa-watch-calculator::before {
- content: "\f8f0";
-}
-
-.fa-list-dropdown::before {
- content: "\e1cf";
-}
-
-.fa-cabinet-filing::before {
- content: "\f64b";
-}
-
-.fa-burger-soda::before {
- content: "\f858";
-}
-
-.fa-square-arrow-up::before {
- content: "\f33c";
-}
-
-.fa-arrow-square-up::before {
- content: "\f33c";
-}
-
-.fa-greater-than-equal::before {
- content: "\f532";
-}
-
-.fa-pallet-box::before {
- content: "\e208";
-}
-
-.fa-face-confounded::before {
- content: "\e36c";
-}
-
-.fa-shield-halved::before {
- content: "\f3ed";
-}
-
-.fa-shield-alt::before {
- content: "\f3ed";
-}
-
-.fa-truck-plow::before {
- content: "\f7de";
-}
-
-.fa-book-atlas::before {
- content: "\f558";
-}
-
-.fa-atlas::before {
- content: "\f558";
-}
-
-.fa-virus::before {
- content: "\e074";
-}
-
-.fa-comment-middle-top::before {
- content: "\e14a";
-}
-
-.fa-envelope-circle-check::before {
- content: "\e4e8";
-}
-
-.fa-layer-group::before {
- content: "\f5fd";
-}
-
-.fa-restroom-simple::before {
- content: "\e23a";
-}
-
-.fa-arrows-to-dot::before {
- content: "\e4be";
-}
-
-.fa-border-outer::before {
- content: "\f851";
-}
-
-.fa-hashtag-lock::before {
- content: "\e415";
-}
-
-.fa-clock-two-thirty::before {
- content: "\e35b";
-}
-
-.fa-archway::before {
- content: "\f557";
-}
-
-.fa-heart-circle-check::before {
- content: "\e4fd";
-}
-
-.fa-house-chimney-crack::before {
- content: "\f6f1";
-}
-
-.fa-house-damage::before {
- content: "\f6f1";
-}
-
-.fa-file-zipper::before {
- content: "\f1c6";
-}
-
-.fa-file-archive::before {
- content: "\f1c6";
-}
-
-.fa-heart-half::before {
- content: "\e1ab";
-}
-
-.fa-comment-check::before {
- content: "\f4ac";
-}
-
-.fa-square::before {
- content: "\f0c8";
-}
-
-.fa-memo::before {
- content: "\e1d8";
-}
-
-.fa-martini-glass-empty::before {
- content: "\f000";
-}
-
-.fa-glass-martini::before {
- content: "\f000";
-}
-
-.fa-couch::before {
- content: "\f4b8";
-}
-
-.fa-cedi-sign::before {
- content: "\e0df";
-}
-
-.fa-italic::before {
- content: "\f033";
-}
-
-.fa-glass-citrus::before {
- content: "\f869";
-}
-
-.fa-calendar-lines-pen::before {
- content: "\e472";
-}
-
-.fa-church::before {
- content: "\f51d";
-}
-
-.fa-person-snowmobiling::before {
- content: "\f7d1";
-}
-
-.fa-snowmobile::before {
- content: "\f7d1";
-}
-
-.fa-face-hushed::before {
- content: "\e37b";
-}
-
-.fa-comments-dollar::before {
- content: "\f653";
-}
-
-.fa-pickaxe::before {
- content: "\e5bf";
-}
-
-.fa-link-simple-slash::before {
- content: "\e1ce";
-}
-
-.fa-democrat::before {
- content: "\f747";
-}
-
-.fa-face-confused::before {
- content: "\e36d";
-}
-
-.fa-pinball::before {
- content: "\e229";
-}
-
-.fa-z::before {
- content: "\5a";
-}
-
-.fa-person-skiing::before {
- content: "\f7c9";
-}
-
-.fa-skiing::before {
- content: "\f7c9";
-}
-
-.fa-deer::before {
- content: "\f78e";
-}
-
-.fa-input-pipe::before {
- content: "\e1be";
-}
-
-.fa-road-lock::before {
- content: "\e567";
-}
-
-.fa-a::before {
- content: "\41";
-}
-
-.fa-bookmark-slash::before {
- content: "\e0c2";
-}
-
-.fa-temperature-arrow-down::before {
- content: "\e03f";
-}
-
-.fa-temperature-down::before {
- content: "\e03f";
-}
-
-.fa-mace::before {
- content: "\f6f8";
-}
-
-.fa-feather-pointed::before {
- content: "\f56b";
-}
-
-.fa-feather-alt::before {
- content: "\f56b";
-}
-
-.fa-sausage::before {
- content: "\f820";
-}
-
-.fa-trash-can-clock::before {
- content: "\e2aa";
-}
-
-.fa-p::before {
- content: "\50";
-}
-
-.fa-snowflake::before {
- content: "\f2dc";
-}
-
-.fa-stomach::before {
- content: "\f623";
-}
-
-.fa-newspaper::before {
- content: "\f1ea";
-}
-
-.fa-rectangle-ad::before {
- content: "\f641";
-}
-
-.fa-ad::before {
- content: "\f641";
-}
-
-.fa-guitar-electric::before {
- content: "\f8be";
-}
-
-.fa-arrow-turn-down-right::before {
- content: "\e3d6";
-}
-
-.fa-moon-cloud::before {
- content: "\f754";
-}
-
-.fa-bread-slice-butter::before {
- content: "\e3e1";
-}
-
-.fa-circle-arrow-right::before {
- content: "\f0a9";
-}
-
-.fa-arrow-circle-right::before {
- content: "\f0a9";
-}
-
-.fa-user-group-crown::before {
- content: "\f6a5";
-}
-
-.fa-users-crown::before {
- content: "\f6a5";
-}
-
-.fa-circle-i::before {
- content: "\e111";
-}
-
-.fa-toilet-paper-check::before {
- content: "\e5b2";
-}
-
-.fa-filter-circle-xmark::before {
- content: "\e17b";
-}
-
-.fa-locust::before {
- content: "\e520";
-}
-
-.fa-sort::before {
- content: "\f0dc";
-}
-
-.fa-unsorted::before {
- content: "\f0dc";
-}
-
-.fa-list-ol::before {
- content: "\f0cb";
-}
-
-.fa-list-1-2::before {
- content: "\f0cb";
-}
-
-.fa-list-numeric::before {
- content: "\f0cb";
-}
-
-.fa-chart-waterfall::before {
- content: "\e0eb";
-}
-
-.fa-face-party::before {
- content: "\e383";
-}
-
-.fa-kidneys::before {
- content: "\f5fb";
-}
-
-.fa-wifi-exclamation::before {
- content: "\e2cf";
-}
-
-.fa-chart-network::before {
- content: "\f78a";
-}
-
-.fa-person-dress-burst::before {
- content: "\e544";
-}
-
-.fa-dice-d4::before {
- content: "\f6d0";
-}
-
-.fa-money-check-dollar::before {
- content: "\f53d";
-}
-
-.fa-money-check-alt::before {
- content: "\f53d";
-}
-
-.fa-vector-square::before {
- content: "\f5cb";
-}
-
-.fa-bread-slice::before {
- content: "\f7ec";
-}
-
-.fa-language::before {
- content: "\f1ab";
-}
-
-.fa-wheat-awn-slash::before {
- content: "\e338";
-}
-
-.fa-face-kiss-wink-heart::before {
- content: "\f598";
-}
-
-.fa-kiss-wink-heart::before {
- content: "\f598";
-}
-
-.fa-dagger::before {
- content: "\f6cb";
-}
-
-.fa-podium::before {
- content: "\f680";
-}
-
-.fa-memo-circle-check::before {
- content: "\e1d9";
-}
-
-.fa-route-highway::before {
- content: "\f61a";
-}
-
-.fa-down-to-line::before {
- content: "\f34a";
-}
-
-.fa-arrow-alt-to-bottom::before {
- content: "\f34a";
-}
-
-.fa-filter::before {
- content: "\f0b0";
-}
-
-.fa-square-g::before {
- content: "\e271";
-}
-
-.fa-circle-phone::before {
- content: "\e11b";
-}
-
-.fa-phone-circle::before {
- content: "\e11b";
-}
-
-.fa-clipboard-prescription::before {
- content: "\f5e8";
-}
-
-.fa-user-nurse-hair::before {
- content: "\e45d";
-}
-
-.fa-question::before {
- content: "\3f";
-}
-
-.fa-file-signature::before {
- content: "\f573";
-}
-
-.fa-toggle-large-on::before {
- content: "\e5b1";
-}
-
-.fa-up-down-left-right::before {
- content: "\f0b2";
-}
-
-.fa-arrows-alt::before {
- content: "\f0b2";
-}
-
-.fa-dryer-heat::before {
- content: "\f862";
-}
-
-.fa-dryer-alt::before {
- content: "\f862";
-}
-
-.fa-house-chimney-user::before {
- content: "\e065";
-}
-
-.fa-hand-holding-heart::before {
- content: "\f4be";
-}
-
-.fa-arrow-up-small-big::before {
- content: "\f88f";
-}
-
-.fa-sort-size-up-alt::before {
- content: "\f88f";
-}
-
-.fa-train-track::before {
- content: "\e453";
-}
-
-.fa-puzzle-piece::before {
- content: "\f12e";
-}
-
-.fa-money-check::before {
- content: "\f53c";
-}
-
-.fa-star-half-stroke::before {
- content: "\f5c0";
-}
-
-.fa-star-half-alt::before {
- content: "\f5c0";
-}
-
-.fa-file-exclamation::before {
- content: "\f31a";
-}
-
-.fa-code::before {
- content: "\f121";
-}
-
-.fa-whiskey-glass::before {
- content: "\f7a0";
-}
-
-.fa-glass-whiskey::before {
- content: "\f7a0";
-}
-
-.fa-moon-stars::before {
- content: "\f755";
-}
-
-.fa-building-circle-exclamation::before {
- content: "\e4d3";
-}
-
-.fa-clothes-hanger::before {
- content: "\e136";
-}
-
-.fa-mobile-notch::before {
- content: "\e1ee";
-}
-
-.fa-mobile-iphone::before {
- content: "\e1ee";
-}
-
-.fa-magnifying-glass-chart::before {
- content: "\e522";
-}
-
-.fa-arrow-up-right-from-square::before {
- content: "\f08e";
-}
-
-.fa-external-link::before {
- content: "\f08e";
-}
-
-.fa-cubes-stacked::before {
- content: "\e4e6";
-}
-
-.fa-images-user::before {
- content: "\e1b9";
-}
-
-.fa-won-sign::before {
- content: "\f159";
-}
-
-.fa-krw::before {
- content: "\f159";
-}
-
-.fa-won::before {
- content: "\f159";
-}
-
-.fa-image-polaroid-user::before {
- content: "\e1b6";
-}
-
-.fa-virus-covid::before {
- content: "\e4a8";
-}
-
-.fa-square-ellipsis::before {
- content: "\e26e";
-}
-
-.fa-pie::before {
- content: "\f705";
-}
-
-.fa-chess-knight-piece::before {
- content: "\f442";
-}
-
-.fa-chess-knight-alt::before {
- content: "\f442";
-}
-
-.fa-austral-sign::before {
- content: "\e0a9";
-}
-
-.fa-cloud-plus::before {
- content: "\e35e";
-}
-
-.fa-f::before {
- content: "\46";
-}
-
-.fa-leaf::before {
- content: "\f06c";
-}
-
-.fa-bed-bunk::before {
- content: "\f8f8";
-}
-
-.fa-road::before {
- content: "\f018";
-}
-
-.fa-taxi::before {
- content: "\f1ba";
-}
-
-.fa-cab::before {
- content: "\f1ba";
-}
-
-.fa-person-circle-plus::before {
- content: "\e541";
-}
-
-.fa-chart-pie::before {
- content: "\f200";
-}
-
-.fa-pie-chart::before {
- content: "\f200";
-}
-
-.fa-bolt-lightning::before {
- content: "\e0b7";
-}
-
-.fa-clock-eight::before {
- content: "\e345";
-}
-
-.fa-sack-xmark::before {
- content: "\e56a";
-}
-
-.fa-file-excel::before {
- content: "\f1c3";
-}
-
-.fa-file-contract::before {
- content: "\f56c";
-}
-
-.fa-fish-fins::before {
- content: "\e4f2";
-}
-
-.fa-circle-q::before {
- content: "\e11e";
-}
-
-.fa-building-flag::before {
- content: "\e4d5";
-}
-
-.fa-face-grin-beam::before {
- content: "\f582";
-}
-
-.fa-grin-beam::before {
- content: "\f582";
-}
-
-.fa-object-ungroup::before {
- content: "\f248";
-}
-
-.fa-face-disguise::before {
- content: "\e370";
-}
-
-.fa-circle-arrow-down-right::before {
- content: "\e0fa";
-}
-
-.fa-alien-8bit::before {
- content: "\f8f6";
-}
-
-.fa-alien-monster::before {
- content: "\f8f6";
-}
-
-.fa-hand-point-ribbon::before {
- content: "\e1a6";
-}
-
-.fa-poop::before {
- content: "\f619";
-}
-
-.fa-object-exclude::before {
- content: "\e49c";
-}
-
-.fa-telescope::before {
- content: "\e03e";
-}
-
-.fa-location-pin::before {
- content: "\f041";
-}
-
-.fa-map-marker::before {
- content: "\f041";
-}
-
-.fa-square-list::before {
- content: "\e489";
-}
-
-.fa-kaaba::before {
- content: "\f66b";
-}
-
-.fa-toilet-paper::before {
- content: "\f71e";
-}
-
-.fa-helmet-safety::before {
- content: "\f807";
-}
-
-.fa-hard-hat::before {
- content: "\f807";
-}
-
-.fa-hat-hard::before {
- content: "\f807";
-}
-
-.fa-comment-code::before {
- content: "\e147";
-}
-
-.fa-sim-cards::before {
- content: "\e251";
-}
-
-.fa-starship::before {
- content: "\e039";
-}
-
-.fa-eject::before {
- content: "\f052";
-}
-
-.fa-circle-right::before {
- content: "\f35a";
-}
-
-.fa-arrow-alt-circle-right::before {
- content: "\f35a";
-}
-
-.fa-plane-circle-check::before {
- content: "\e555";
-}
-
-.fa-seal::before {
- content: "\e241";
-}
-
-.fa-user-cowboy::before {
- content: "\f8ea";
-}
-
-.fa-hexagon-vertical-nft::before {
- content: "\e505";
-}
-
-.fa-face-rolling-eyes::before {
- content: "\f5a5";
-}
-
-.fa-meh-rolling-eyes::before {
- content: "\f5a5";
-}
-
-.fa-bread-loaf::before {
- content: "\f7eb";
-}
-
-.fa-rings-wedding::before {
- content: "\f81b";
-}
-
-.fa-object-group::before {
- content: "\f247";
-}
-
-.fa-french-fries::before {
- content: "\f803";
-}
-
-.fa-chart-line::before {
- content: "\f201";
-}
-
-.fa-line-chart::before {
- content: "\f201";
-}
-
-.fa-calendar-arrow-down::before {
- content: "\e0d0";
-}
-
-.fa-calendar-download::before {
- content: "\e0d0";
-}
-
-.fa-send-back::before {
- content: "\f87e";
-}
-
-.fa-mask-ventilator::before {
- content: "\e524";
-}
-
-.fa-signature-lock::before {
- content: "\e3ca";
-}
-
-.fa-arrow-right::before {
- content: "\f061";
-}
-
-.fa-signs-post::before {
- content: "\f277";
-}
-
-.fa-map-signs::before {
- content: "\f277";
-}
-
-.fa-octagon-plus::before {
- content: "\f301";
-}
-
-.fa-plus-octagon::before {
- content: "\f301";
-}
-
-.fa-cash-register::before {
- content: "\f788";
-}
-
-.fa-person-circle-question::before {
- content: "\e542";
-}
-
-.fa-melon-slice::before {
- content: "\e311";
-}
-
-.fa-space-station-moon::before {
- content: "\e033";
-}
-
-.fa-message-smile::before {
- content: "\f4aa";
-}
-
-.fa-comment-alt-smile::before {
- content: "\f4aa";
-}
-
-.fa-cup-straw::before {
- content: "\e363";
-}
-
-.fa-left-from-line::before {
- content: "\f348";
-}
-
-.fa-arrow-alt-from-right::before {
- content: "\f348";
-}
-
-.fa-h::before {
- content: "\48";
-}
-
-.fa-basket-shopping-simple::before {
- content: "\e0af";
-}
-
-.fa-shopping-basket-alt::before {
- content: "\e0af";
-}
-
-.fa-hands-holding-heart::before {
- content: "\f4c3";
-}
-
-.fa-hands-heart::before {
- content: "\f4c3";
-}
-
-.fa-clock-nine::before {
- content: "\e34c";
-}
-
-.fa-tarp::before {
- content: "\e57b";
-}
-
-.fa-face-sleepy::before {
- content: "\e38e";
-}
-
-.fa-hand-horns::before {
- content: "\e1a9";
-}
-
-.fa-screwdriver-wrench::before {
- content: "\f7d9";
-}
-
-.fa-tools::before {
- content: "\f7d9";
-}
-
-.fa-arrows-to-eye::before {
- content: "\e4bf";
-}
-
-.fa-circle-three-quarters::before {
- content: "\e125";
-}
-
-.fa-trophy-star::before {
- content: "\f2eb";
-}
-
-.fa-trophy-alt::before {
- content: "\f2eb";
-}
-
-.fa-plug-circle-bolt::before {
- content: "\e55b";
-}
-
-.fa-face-thermometer::before {
- content: "\e39a";
-}
-
-.fa-shirt-running::before {
- content: "\e3c8";
-}
-
-.fa-book-circle-arrow-up::before {
- content: "\e0bd";
-}
-
-.fa-face-nauseated::before {
- content: "\e381";
-}
-
-.fa-heart::before {
- content: "\f004";
-}
-
-.fa-file-chart-pie::before {
- content: "\f65a";
-}
-
-.fa-mars-and-venus::before {
- content: "\f224";
-}
-
-.fa-house-user::before {
- content: "\e1b0";
-}
-
-.fa-home-user::before {
- content: "\e1b0";
-}
-
-.fa-circle-arrow-down-left::before {
- content: "\e0f9";
-}
-
-.fa-dumpster-fire::before {
- content: "\f794";
-}
-
-.fa-hexagon-minus::before {
- content: "\f307";
-}
-
-.fa-minus-hexagon::before {
- content: "\f307";
-}
-
-.fa-left-to-line::before {
- content: "\f34b";
-}
-
-.fa-arrow-alt-to-left::before {
- content: "\f34b";
-}
-
-.fa-house-crack::before {
- content: "\e3b1";
-}
-
-.fa-paw-simple::before {
- content: "\f701";
-}
-
-.fa-paw-alt::before {
- content: "\f701";
-}
-
-.fa-arrow-left-long-to-line::before {
- content: "\e3d4";
-}
-
-.fa-brackets-round::before {
- content: "\e0c5";
-}
-
-.fa-parentheses::before {
- content: "\e0c5";
-}
-
-.fa-martini-glass-citrus::before {
- content: "\f561";
-}
-
-.fa-cocktail::before {
- content: "\f561";
-}
-
-.fa-user-shakespeare::before {
- content: "\e2c2";
-}
-
-.fa-arrow-right-to-arc::before {
- content: "\e4b2";
-}
-
-.fa-face-surprise::before {
- content: "\f5c2";
-}
-
-.fa-surprise::before {
- content: "\f5c2";
-}
-
-.fa-bottle-water::before {
- content: "\e4c5";
-}
-
-.fa-circle-pause::before {
- content: "\f28b";
-}
-
-.fa-pause-circle::before {
- content: "\f28b";
-}
-
-.fa-gauge-circle-plus::before {
- content: "\e498";
-}
-
-.fa-folders::before {
- content: "\f660";
-}
-
-.fa-angel::before {
- content: "\f779";
-}
-
-.fa-value-absolute::before {
- content: "\f6a6";
-}
-
-.fa-rabbit::before {
- content: "\f708";
-}
-
-.fa-toilet-paper-slash::before {
- content: "\e072";
-}
-
-.fa-apple-whole::before {
- content: "\f5d1";
-}
-
-.fa-apple-alt::before {
- content: "\f5d1";
-}
-
-.fa-kitchen-set::before {
- content: "\e51a";
-}
-
-.fa-diamond-half::before {
- content: "\e5b7";
-}
-
-.fa-lock-keyhole::before {
- content: "\f30d";
-}
-
-.fa-lock-alt::before {
- content: "\f30d";
-}
-
-.fa-r::before {
- content: "\52";
-}
-
-.fa-temperature-quarter::before {
- content: "\f2ca";
-}
-
-.fa-temperature-1::before {
- content: "\f2ca";
-}
-
-.fa-thermometer-1::before {
- content: "\f2ca";
-}
-
-.fa-thermometer-quarter::before {
- content: "\f2ca";
-}
-
-.fa-square-info::before {
- content: "\f30f";
-}
-
-.fa-info-square::before {
- content: "\f30f";
-}
-
-.fa-wifi-slash::before {
- content: "\f6ac";
-}
-
-.fa-toilet-paper-xmark::before {
- content: "\e5b3";
-}
-
-.fa-hands-holding-dollar::before {
- content: "\f4c5";
-}
-
-.fa-hands-usd::before {
- content: "\f4c5";
-}
-
-.fa-cube::before {
- content: "\f1b2";
-}
-
-.fa-arrow-down-triangle-square::before {
- content: "\f888";
-}
-
-.fa-sort-shapes-down::before {
- content: "\f888";
-}
-
-.fa-bitcoin-sign::before {
- content: "\e0b4";
-}
-
-.fa-shutters::before {
- content: "\e449";
-}
-
-.fa-shield-dog::before {
- content: "\e573";
-}
-
-.fa-solar-panel::before {
- content: "\f5ba";
-}
-
-.fa-lock-open::before {
- content: "\f3c1";
-}
-
-.fa-table-tree::before {
- content: "\e293";
-}
-
-.fa-house-chimney-heart::before {
- content: "\e1b2";
-}
-
-.fa-tally-3::before {
- content: "\e296";
-}
-
-.fa-elevator::before {
- content: "\e16d";
-}
-
-.fa-money-bill-transfer::before {
- content: "\e528";
-}
-
-.fa-money-bill-trend-up::before {
- content: "\e529";
-}
-
-.fa-house-flood-water-circle-arrow-right::before {
- content: "\e50f";
-}
-
-.fa-square-poll-horizontal::before {
- content: "\f682";
-}
-
-.fa-poll-h::before {
- content: "\f682";
-}
-
-.fa-circle::before {
- content: "\f111";
-}
-
-.fa-cart-circle-exclamation::before {
- content: "\e3f2";
-}
-
-.fa-sword::before {
- content: "\f71c";
-}
-
-.fa-backward-fast::before {
- content: "\f049";
-}
-
-.fa-fast-backward::before {
- content: "\f049";
-}
-
-.fa-recycle::before {
- content: "\f1b8";
-}
-
-.fa-user-astronaut::before {
- content: "\f4fb";
-}
-
-.fa-interrobang::before {
- content: "\e5ba";
-}
-
-.fa-plane-slash::before {
- content: "\e069";
-}
-
-.fa-circle-dashed::before {
- content: "\e105";
-}
-
-.fa-trademark::before {
- content: "\f25c";
-}
-
-.fa-basketball::before {
- content: "\f434";
-}
-
-.fa-basketball-ball::before {
- content: "\f434";
-}
-
-.fa-fork-knife::before {
- content: "\f2e6";
-}
-
-.fa-utensils-alt::before {
- content: "\f2e6";
-}
-
-.fa-satellite-dish::before {
- content: "\f7c0";
-}
-
-.fa-badge-check::before {
- content: "\f336";
-}
-
-.fa-circle-up::before {
- content: "\f35b";
-}
-
-.fa-arrow-alt-circle-up::before {
- content: "\f35b";
-}
-
-.fa-slider::before {
- content: "\e252";
-}
-
-.fa-mobile-screen-button::before {
- content: "\f3cd";
-}
-
-.fa-mobile-alt::before {
- content: "\f3cd";
-}
-
-.fa-clock-one-thirty::before {
- content: "\e34f";
-}
-
-.fa-inbox-out::before {
- content: "\f311";
-}
-
-.fa-inbox-arrow-up::before {
- content: "\f311";
-}
-
-.fa-cloud-slash::before {
- content: "\e137";
-}
-
-.fa-volume-high::before {
- content: "\f028";
-}
-
-.fa-volume-up::before {
- content: "\f028";
-}
-
-.fa-users-rays::before {
- content: "\e593";
-}
-
-.fa-wallet::before {
- content: "\f555";
-}
-
-.fa-octagon-check::before {
- content: "\e426";
-}
-
-.fa-flatbread-stuffed::before {
- content: "\e40c";
-}
-
-.fa-clipboard-check::before {
- content: "\f46c";
-}
-
-.fa-cart-circle-plus::before {
- content: "\e3f3";
-}
-
-.fa-truck-clock::before {
- content: "\f48c";
-}
-
-.fa-shipping-timed::before {
- content: "\f48c";
-}
-
-.fa-pool-8-ball::before {
- content: "\e3c5";
-}
-
-.fa-file-audio::before {
- content: "\f1c7";
-}
-
-.fa-turn-down-left::before {
- content: "\e331";
-}
-
-.fa-lock-hashtag::before {
- content: "\e423";
-}
-
-.fa-chart-radar::before {
- content: "\e0e7";
-}
-
-.fa-staff::before {
- content: "\f71b";
-}
-
-.fa-burger::before {
- content: "\f805";
-}
-
-.fa-hamburger::before {
- content: "\f805";
-}
-
-.fa-utility-pole::before {
- content: "\e2c3";
-}
-
-.fa-transporter-6::before {
- content: "\e2a7";
-}
-
-.fa-wrench::before {
- content: "\f0ad";
-}
-
-.fa-bugs::before {
- content: "\e4d0";
-}
-
-.fa-vector-polygon::before {
- content: "\e2c7";
-}
-
-.fa-diagram-nested::before {
- content: "\e157";
-}
-
-.fa-rupee-sign::before {
- content: "\f156";
-}
-
-.fa-rupee::before {
- content: "\f156";
-}
-
-.fa-file-image::before {
- content: "\f1c5";
-}
-
-.fa-circle-question::before {
- content: "\f059";
-}
-
-.fa-question-circle::before {
- content: "\f059";
-}
-
-.fa-image-user::before {
- content: "\e1b8";
-}
-
-.fa-buoy::before {
- content: "\e5b5";
-}
-
-.fa-plane-departure::before {
- content: "\f5b0";
-}
-
-.fa-handshake-slash::before {
- content: "\e060";
-}
-
-.fa-book-bookmark::before {
- content: "\e0bb";
-}
-
-.fa-border-center-h::before {
- content: "\f89c";
-}
-
-.fa-can-food::before {
- content: "\e3e6";
-}
-
-.fa-typewriter::before {
- content: "\f8e7";
-}
-
-.fa-arrow-right-from-arc::before {
- content: "\e4b1";
-}
-
-.fa-circle-k::before {
- content: "\e113";
-}
-
-.fa-face-hand-over-mouth::before {
- content: "\e378";
-}
-
-.fa-popcorn::before {
- content: "\f819";
-}
-
-.fa-house-water::before {
- content: "\f74f";
-}
-
-.fa-house-flood::before {
- content: "\f74f";
-}
-
-.fa-object-subtract::before {
- content: "\e49e";
-}
-
-.fa-code-branch::before {
- content: "\f126";
-}
-
-.fa-warehouse-full::before {
- content: "\f495";
-}
-
-.fa-warehouse-alt::before {
- content: "\f495";
-}
-
-.fa-hat-cowboy::before {
- content: "\f8c0";
-}
-
-.fa-bridge::before {
- content: "\e4c8";
-}
-
-.fa-phone-flip::before {
- content: "\f879";
-}
-
-.fa-phone-alt::before {
- content: "\f879";
-}
-
-.fa-arrow-down-from-dotted-line::before {
- content: "\e090";
-}
-
-.fa-square-quarters::before {
- content: "\e44e";
-}
-
-.fa-truck-front::before {
- content: "\e2b7";
-}
-
-.fa-cat::before {
- content: "\f6be";
-}
-
-.fa-trash-xmark::before {
- content: "\e2b4";
-}
-
-.fa-circle-caret-left::before {
- content: "\f32e";
-}
-
-.fa-caret-circle-left::before {
- content: "\f32e";
-}
-
-.fa-files::before {
- content: "\e178";
-}
-
-.fa-anchor-circle-exclamation::before {
- content: "\e4ab";
-}
-
-.fa-face-clouds::before {
- content: "\e47d";
-}
-
-.fa-user-crown::before {
- content: "\f6a4";
-}
-
-.fa-truck-field::before {
- content: "\e58d";
-}
-
-.fa-route::before {
- content: "\f4d7";
-}
-
-.fa-cart-circle-check::before {
- content: "\e3f1";
-}
-
-.fa-clipboard-question::before {
- content: "\e4e3";
-}
-
-.fa-panorama::before {
- content: "\e209";
-}
-
-.fa-comment-medical::before {
- content: "\f7f5";
-}
-
-.fa-teeth-open::before {
- content: "\f62f";
-}
-
-.fa-user-tie-hair-long::before {
- content: "\e460";
-}
-
-.fa-file-circle-minus::before {
- content: "\e4ed";
-}
-
-.fa-head-side-medical::before {
- content: "\f809";
-}
-
-.fa-tags::before {
- content: "\f02c";
-}
-
-.fa-wine-glass::before {
- content: "\f4e3";
-}
-
-.fa-forward-fast::before {
- content: "\f050";
-}
-
-.fa-fast-forward::before {
- content: "\f050";
-}
-
-.fa-face-meh-blank::before {
- content: "\f5a4";
-}
-
-.fa-meh-blank::before {
- content: "\f5a4";
-}
-
-.fa-user-robot::before {
- content: "\e04b";
-}
-
-.fa-square-parking::before {
- content: "\f540";
-}
-
-.fa-parking::before {
- content: "\f540";
-}
-
-.fa-card-diamond::before {
- content: "\e3ea";
-}
-
-.fa-face-zipper::before {
- content: "\e3a5";
-}
-
-.fa-face-raised-eyebrow::before {
- content: "\e388";
-}
-
-.fa-house-signal::before {
- content: "\e012";
-}
-
-.fa-square-chevron-up::before {
- content: "\f32c";
-}
-
-.fa-chevron-square-up::before {
- content: "\f32c";
-}
-
-.fa-bars-progress::before {
- content: "\f828";
-}
-
-.fa-tasks-alt::before {
- content: "\f828";
-}
-
-.fa-faucet-drip::before {
- content: "\e006";
-}
-
-.fa-arrows-to-line::before {
- content: "\e0a7";
-}
-
-.fa-dolphin::before {
- content: "\e168";
-}
-
-.fa-arrow-up-right::before {
- content: "\e09f";
-}
-
-.fa-circle-r::before {
- content: "\e120";
-}
-
-.fa-cart-flatbed::before {
- content: "\f474";
-}
-
-.fa-dolly-flatbed::before {
- content: "\f474";
-}
-
-.fa-ban-smoking::before {
- content: "\f54d";
-}
-
-.fa-smoking-ban::before {
- content: "\f54d";
-}
-
-.fa-circle-sort-up::before {
- content: "\e032";
-}
-
-.fa-sort-circle-up::before {
- content: "\e032";
-}
-
-.fa-terminal::before {
- content: "\f120";
-}
-
-.fa-mobile-button::before {
- content: "\f10b";
-}
-
-.fa-house-medical-flag::before {
- content: "\e514";
-}
-
-.fa-basket-shopping::before {
- content: "\f291";
-}
-
-.fa-shopping-basket::before {
- content: "\f291";
-}
-
-.fa-tape::before {
- content: "\f4db";
-}
-
-.fa-chestnut::before {
- content: "\e3f6";
-}
-
-.fa-bus-simple::before {
- content: "\f55e";
-}
-
-.fa-bus-alt::before {
- content: "\f55e";
-}
-
-.fa-eye::before {
- content: "\f06e";
-}
-
-.fa-face-sad-cry::before {
- content: "\f5b3";
-}
-
-.fa-sad-cry::before {
- content: "\f5b3";
-}
-
-.fa-heat::before {
- content: "\e00c";
-}
-
-.fa-ticket-airline::before {
- content: "\e29a";
-}
-
-.fa-boot-heeled::before {
- content: "\e33f";
-}
-
-.fa-arrows-minimize::before {
- content: "\e0a5";
-}
-
-.fa-compress-arrows::before {
- content: "\e0a5";
-}
-
-.fa-audio-description::before {
- content: "\f29e";
-}
-
-.fa-person-military-to-person::before {
- content: "\e54c";
-}
-
-.fa-file-shield::before {
- content: "\e4f0";
-}
-
-.fa-hexagon::before {
- content: "\f312";
-}
-
-.fa-manhole::before {
- content: "\e1d6";
-}
-
-.fa-user-slash::before {
- content: "\f506";
-}
-
-.fa-pen::before {
- content: "\f304";
-}
-
-.fa-tower-observation::before {
- content: "\e586";
-}
-
-.fa-floppy-disks::before {
- content: "\e183";
-}
-
-.fa-toilet-paper-blank-under::before {
- content: "\e29f";
-}
-
-.fa-toilet-paper-reverse-alt::before {
- content: "\e29f";
-}
-
-.fa-file-code::before {
- content: "\f1c9";
-}
-
-.fa-signal::before {
- content: "\f012";
-}
-
-.fa-signal-5::before {
- content: "\f012";
-}
-
-.fa-signal-perfect::before {
- content: "\f012";
-}
-
-.fa-pump::before {
- content: "\e442";
-}
-
-.fa-bus::before {
- content: "\f207";
-}
-
-.fa-heart-circle-xmark::before {
- content: "\e501";
-}
-
-.fa-arrow-up-left-from-circle::before {
- content: "\e09e";
-}
-
-.fa-house-chimney::before {
- content: "\e3af";
-}
-
-.fa-home-lg::before {
- content: "\e3af";
-}
-
-.fa-window-maximize::before {
- content: "\f2d0";
-}
-
-.fa-dryer::before {
- content: "\f861";
-}
-
-.fa-face-frown::before {
- content: "\f119";
-}
-
-.fa-frown::before {
- content: "\f119";
-}
-
-.fa-chess-bishop-piece::before {
- content: "\f43b";
-}
-
-.fa-chess-bishop-alt::before {
- content: "\f43b";
-}
-
-.fa-shirt-tank-top::before {
- content: "\e3c9";
-}
-
-.fa-diploma::before {
- content: "\f5ea";
-}
-
-.fa-scroll-ribbon::before {
- content: "\f5ea";
-}
-
-.fa-screencast::before {
- content: "\e23e";
-}
-
-.fa-walker::before {
- content: "\f831";
-}
-
-.fa-prescription::before {
- content: "\f5b1";
-}
-
-.fa-shop::before {
- content: "\f54f";
-}
-
-.fa-store-alt::before {
- content: "\f54f";
-}
-
-.fa-floppy-disk::before {
- content: "\f0c7";
-}
-
-.fa-save::before {
- content: "\f0c7";
-}
-
-.fa-vihara::before {
- content: "\f6a7";
-}
-
-.fa-face-kiss-closed-eyes::before {
- content: "\e37d";
-}
-
-.fa-scale-unbalanced::before {
- content: "\f515";
-}
-
-.fa-balance-scale-left::before {
- content: "\f515";
-}
-
-.fa-file-user::before {
- content: "\f65c";
-}
-
-.fa-user-police-tie::before {
- content: "\e334";
-}
-
-.fa-face-tongue-money::before {
- content: "\e39d";
-}
-
-.fa-tennis-ball::before {
- content: "\f45e";
-}
-
-.fa-square-l::before {
- content: "\e275";
-}
-
-.fa-sort-up::before {
- content: "\f0de";
-}
-
-.fa-sort-asc::before {
- content: "\f0de";
-}
-
-.fa-calendar-arrow-up::before {
- content: "\e0d1";
-}
-
-.fa-calendar-upload::before {
- content: "\e0d1";
-}
-
-.fa-comment-dots::before {
- content: "\f4ad";
-}
-
-.fa-commenting::before {
- content: "\f4ad";
-}
-
-.fa-plant-wilt::before {
- content: "\e5aa";
-}
-
-.fa-scarf::before {
- content: "\f7c1";
-}
-
-.fa-album-circle-plus::before {
- content: "\e48c";
-}
-
-.fa-user-nurse-hair-long::before {
- content: "\e45e";
-}
-
-.fa-diamond::before {
- content: "\f219";
-}
-
-.fa-square-left::before {
- content: "\f351";
-}
-
-.fa-arrow-alt-square-left::before {
- content: "\f351";
-}
-
-.fa-face-grin-squint::before {
- content: "\f585";
-}
-
-.fa-grin-squint::before {
- content: "\f585";
-}
-
-.fa-circle-ellipsis-vertical::before {
- content: "\e10b";
-}
-
-.fa-hand-holding-dollar::before {
- content: "\f4c0";
-}
-
-.fa-hand-holding-usd::before {
- content: "\f4c0";
-}
-
-.fa-grid-dividers::before {
- content: "\e3ad";
-}
-
-.fa-bacterium::before {
- content: "\e05a";
-}
-
-.fa-hand-pointer::before {
- content: "\f25a";
-}
-
-.fa-drum-steelpan::before {
- content: "\f56a";
-}
-
-.fa-hand-scissors::before {
- content: "\f257";
-}
-
-.fa-hands-praying::before {
- content: "\f684";
-}
-
-.fa-praying-hands::before {
- content: "\f684";
-}
-
-.fa-face-pensive::before {
- content: "\e384";
-}
-
-.fa-user-music::before {
- content: "\f8eb";
-}
-
-.fa-arrow-rotate-right::before {
- content: "\f01e";
-}
-
-.fa-arrow-right-rotate::before {
- content: "\f01e";
-}
-
-.fa-arrow-rotate-forward::before {
- content: "\f01e";
-}
-
-.fa-redo::before {
- content: "\f01e";
-}
-
-.fa-messages-dollar::before {
- content: "\f652";
-}
-
-.fa-comments-alt-dollar::before {
- content: "\f652";
-}
-
-.fa-sensor-on::before {
- content: "\e02b";
-}
-
-.fa-balloon::before {
- content: "\e2e3";
-}
-
-.fa-biohazard::before {
- content: "\f780";
-}
-
-.fa-chess-queen-piece::before {
- content: "\f446";
-}
-
-.fa-chess-queen-alt::before {
- content: "\f446";
-}
-
-.fa-location-crosshairs::before {
- content: "\f601";
-}
-
-.fa-location::before {
- content: "\f601";
-}
-
-.fa-mars-double::before {
- content: "\f227";
-}
-
-.fa-house-person-leave::before {
- content: "\e00f";
-}
-
-.fa-house-leave::before {
- content: "\e00f";
-}
-
-.fa-house-person-depart::before {
- content: "\e00f";
-}
-
-.fa-ruler-triangle::before {
- content: "\f61c";
-}
-
-.fa-card-club::before {
- content: "\e3e9";
-}
-
-.fa-child-dress::before {
- content: "\e59c";
-}
-
-.fa-users-between-lines::before {
- content: "\e591";
-}
-
-.fa-lungs-virus::before {
- content: "\e067";
-}
-
-.fa-spinner-third::before {
- content: "\f3f4";
-}
-
-.fa-face-grin-tears::before {
- content: "\f588";
-}
-
-.fa-grin-tears::before {
- content: "\f588";
-}
-
-.fa-phone::before {
- content: "\f095";
-}
-
-.fa-computer-mouse-scrollwheel::before {
- content: "\f8cd";
-}
-
-.fa-mouse-alt::before {
- content: "\f8cd";
-}
-
-.fa-calendar-xmark::before {
- content: "\f273";
-}
-
-.fa-calendar-times::before {
- content: "\f273";
-}
-
-.fa-child-reaching::before {
- content: "\e59d";
-}
-
-.fa-table-layout::before {
- content: "\e290";
-}
-
-.fa-narwhal::before {
- content: "\f6fe";
-}
-
-.fa-ramp-loading::before {
- content: "\f4d4";
-}
-
-.fa-calendar-circle-plus::before {
- content: "\e470";
-}
-
-.fa-toothbrush::before {
- content: "\f635";
-}
-
-.fa-border-inner::before {
- content: "\f84e";
-}
-
-.fa-paw-claws::before {
- content: "\f702";
-}
-
-.fa-kiwi-fruit::before {
- content: "\e30c";
-}
-
-.fa-traffic-light-slow::before {
- content: "\f639";
-}
-
-.fa-rectangle-code::before {
- content: "\e322";
-}
-
-.fa-head-side-virus::before {
- content: "\e064";
-}
-
-.fa-keyboard-brightness::before {
- content: "\e1c0";
-}
-
-.fa-books-medical::before {
- content: "\f7e8";
-}
-
-.fa-lightbulb-slash::before {
- content: "\f673";
-}
-
-.fa-house-blank::before {
- content: "\e487";
-}
-
-.fa-home-blank::before {
- content: "\e487";
-}
-
-.fa-square-5::before {
- content: "\e25a";
-}
-
-.fa-square-heart::before {
- content: "\f4c8";
-}
-
-.fa-heart-square::before {
- content: "\f4c8";
-}
-
-.fa-puzzle::before {
- content: "\e443";
-}
-
-.fa-user-gear::before {
- content: "\f4fe";
-}
-
-.fa-user-cog::before {
- content: "\f4fe";
-}
-
-.fa-pipe-circle-check::before {
- content: "\e436";
-}
-
-.fa-arrow-up-1-9::before {
- content: "\f163";
-}
-
-.fa-sort-numeric-up::before {
- content: "\f163";
-}
-
-.fa-octagon-exclamation::before {
- content: "\e204";
-}
-
-.fa-dial-low::before {
- content: "\e15d";
-}
-
-.fa-door-closed::before {
- content: "\f52a";
-}
-
-.fa-laptop-mobile::before {
- content: "\f87a";
-}
-
-.fa-phone-laptop::before {
- content: "\f87a";
-}
-
-.fa-conveyor-belt-boxes::before {
- content: "\f46f";
-}
-
-.fa-conveyor-belt-alt::before {
- content: "\f46f";
-}
-
-.fa-shield-virus::before {
- content: "\e06c";
-}
-
-.fa-starfighter-twin-ion-engine-advanced::before {
- content: "\e28e";
-}
-
-.fa-starfighter-alt-advanced::before {
- content: "\e28e";
-}
-
-.fa-dice-six::before {
- content: "\f526";
-}
-
-.fa-starfighter-twin-ion-engine::before {
- content: "\e038";
-}
-
-.fa-starfighter-alt::before {
- content: "\e038";
-}
-
-.fa-rocket-launch::before {
- content: "\e027";
-}
-
-.fa-mosquito-net::before {
- content: "\e52c";
-}
-
-.fa-vent-damper::before {
- content: "\e465";
-}
-
-.fa-bridge-water::before {
- content: "\e4ce";
-}
-
-.fa-ban-bug::before {
- content: "\f7f9";
-}
-
-.fa-debug::before {
- content: "\f7f9";
-}
-
-.fa-person-booth::before {
- content: "\f756";
-}
-
-.fa-text-width::before {
- content: "\f035";
-}
-
-.fa-garage-car::before {
- content: "\e00a";
-}
-
-.fa-square-kanban::before {
- content: "\e488";
-}
-
-.fa-hat-wizard::before {
- content: "\f6e8";
-}
-
-.fa-pen-fancy::before {
- content: "\f5ac";
-}
-
-.fa-coffee-pot::before {
- content: "\e002";
-}
-
-.fa-mouse-field::before {
- content: "\e5a8";
-}
-
-.fa-person-digging::before {
- content: "\f85e";
-}
-
-.fa-digging::before {
- content: "\f85e";
-}
-
-.fa-shower-down::before {
- content: "\e24d";
-}
-
-.fa-shower-alt::before {
- content: "\e24d";
-}
-
-.fa-box-circle-check::before {
- content: "\e0c4";
-}
-
-.fa-brightness::before {
- content: "\e0c9";
-}
-
-.fa-car-side-bolt::before {
- content: "\e344";
-}
-
-.fa-ornament::before {
- content: "\f7b8";
-}
-
-.fa-phone-arrow-down-left::before {
- content: "\e223";
-}
-
-.fa-phone-arrow-down::before {
- content: "\e223";
-}
-
-.fa-phone-incoming::before {
- content: "\e223";
-}
-
-.fa-cloud-word::before {
- content: "\e138";
-}
-
-.fa-hand-fingers-crossed::before {
- content: "\e1a3";
-}
-
-.fa-trash::before {
- content: "\f1f8";
-}
-
-.fa-gauge-simple::before {
- content: "\f629";
-}
-
-.fa-gauge-simple-med::before {
- content: "\f629";
-}
-
-.fa-tachometer-average::before {
- content: "\f629";
-}
-
-.fa-arrow-down-small-big::before {
- content: "\f88d";
-}
-
-.fa-sort-size-down-alt::before {
- content: "\f88d";
-}
-
-.fa-book-medical::before {
- content: "\f7e6";
-}
-
-.fa-face-melting::before {
- content: "\e483";
-}
-
-.fa-poo::before {
- content: "\f2fe";
-}
-
-.fa-pen-clip-slash::before {
- content: "\e20f";
-}
-
-.fa-pen-alt-slash::before {
- content: "\e20f";
-}
-
-.fa-quote-right::before {
- content: "\f10e";
-}
-
-.fa-quote-right-alt::before {
- content: "\f10e";
-}
-
-.fa-scroll-old::before {
- content: "\f70f";
-}
-
-.fa-guitars::before {
- content: "\f8bf";
-}
-
-.fa-phone-xmark::before {
- content: "\e227";
-}
-
-.fa-hose::before {
- content: "\e419";
-}
-
-.fa-clock-six::before {
- content: "\e352";
-}
-
-.fa-shirt::before {
- content: "\f553";
-}
-
-.fa-t-shirt::before {
- content: "\f553";
-}
-
-.fa-tshirt::before {
- content: "\f553";
-}
-
-.fa-square-r::before {
- content: "\e27c";
-}
-
-.fa-cubes::before {
- content: "\f1b3";
-}
-
-.fa-envelope-open-dollar::before {
- content: "\f657";
-}
-
-.fa-divide::before {
- content: "\f529";
-}
-
-.fa-sun-cloud::before {
- content: "\f763";
-}
-
-.fa-lamp-floor::before {
- content: "\e015";
-}
-
-.fa-square-7::before {
- content: "\e25c";
-}
-
-.fa-tenge-sign::before {
- content: "\f7d7";
-}
-
-.fa-tenge::before {
- content: "\f7d7";
-}
-
-.fa-headphones::before {
- content: "\f025";
-}
-
-.fa-hands-holding::before {
- content: "\f4c2";
-}
-
-.fa-campfire::before {
- content: "\f6ba";
-}
-
-.fa-circle-ampersand::before {
- content: "\e0f8";
-}
-
-.fa-snowflakes::before {
- content: "\f7cf";
-}
-
-.fa-hands-clapping::before {
- content: "\e1a8";
-}
-
-.fa-republican::before {
- content: "\f75e";
-}
-
-.fa-leaf-maple::before {
- content: "\f6f6";
-}
-
-.fa-arrow-left::before {
- content: "\f060";
-}
-
-.fa-person-circle-xmark::before {
- content: "\e543";
-}
-
-.fa-ruler::before {
- content: "\f545";
-}
-
-.fa-cup-straw-swoosh::before {
- content: "\e364";
-}
-
-.fa-temperature-sun::before {
- content: "\f76a";
-}
-
-.fa-temperature-hot::before {
- content: "\f76a";
-}
-
-.fa-align-left::before {
- content: "\f036";
-}
-
-.fa-dice-d6::before {
- content: "\f6d1";
-}
-
-.fa-restroom::before {
- content: "\f7bd";
-}
-
-.fa-high-definition::before {
- content: "\e1ae";
-}
-
-.fa-rectangle-hd::before {
- content: "\e1ae";
-}
-
-.fa-j::before {
- content: "\4a";
-}
-
-.fa-galaxy::before {
- content: "\e008";
-}
-
-.fa-users-viewfinder::before {
- content: "\e595";
-}
-
-.fa-file-video::before {
- content: "\f1c8";
-}
-
-.fa-cherries::before {
- content: "\e0ec";
-}
-
-.fa-up-right-from-square::before {
- content: "\f35d";
-}
-
-.fa-external-link-alt::before {
- content: "\f35d";
-}
-
-.fa-circle-sort::before {
- content: "\e030";
-}
-
-.fa-sort-circle::before {
- content: "\e030";
-}
-
-.fa-table-cells::before {
- content: "\f00a";
-}
-
-.fa-th::before {
- content: "\f00a";
-}
-
-.fa-file-pdf::before {
- content: "\f1c1";
-}
-
-.fa-siren::before {
- content: "\e02d";
-}
-
-.fa-arrow-up-to-dotted-line::before {
- content: "\e0a1";
-}
-
-.fa-image-landscape::before {
- content: "\e1b5";
-}
-
-.fa-landscape::before {
- content: "\e1b5";
-}
-
-.fa-tank-water::before {
- content: "\e452";
-}
-
-.fa-curling-stone::before {
- content: "\f44a";
-}
-
-.fa-curling::before {
- content: "\f44a";
-}
-
-.fa-gamepad-modern::before {
- content: "\e5a2";
-}
-
-.fa-gamepad-alt::before {
- content: "\e5a2";
-}
-
-.fa-messages-question::before {
- content: "\e1e7";
-}
-
-.fa-book-bible::before {
- content: "\f647";
-}
-
-.fa-bible::before {
- content: "\f647";
-}
-
-.fa-o::before {
- content: "\4f";
-}
-
-.fa-suitcase-medical::before {
- content: "\f0fa";
-}
-
-.fa-medkit::before {
- content: "\f0fa";
-}
-
-.fa-briefcase-arrow-right::before {
- content: "\e2f2";
-}
-
-.fa-expand-wide::before {
- content: "\f320";
-}
-
-.fa-clock-eleven-thirty::before {
- content: "\e348";
-}
-
-.fa-rv::before {
- content: "\f7be";
-}
-
-.fa-user-secret::before {
- content: "\f21b";
-}
-
-.fa-otter::before {
- content: "\f700";
-}
-
-.fa-dreidel::before {
- content: "\f792";
-}
-
-.fa-person-dress::before {
- content: "\f182";
-}
-
-.fa-female::before {
- content: "\f182";
-}
-
-.fa-comment-dollar::before {
- content: "\f651";
-}
-
-.fa-business-time::before {
- content: "\f64a";
-}
-
-.fa-briefcase-clock::before {
- content: "\f64a";
-}
-
-.fa-flower-tulip::before {
- content: "\f801";
-}
-
-.fa-people-pants-simple::before {
- content: "\e21a";
-}
-
-.fa-cloud-drizzle::before {
- content: "\f738";
-}
-
-.fa-table-cells-large::before {
- content: "\f009";
-}
-
-.fa-th-large::before {
- content: "\f009";
-}
-
-.fa-book-tanakh::before {
- content: "\f827";
-}
-
-.fa-tanakh::before {
- content: "\f827";
-}
-
-.fa-solar-system::before {
- content: "\e02f";
-}
-
-.fa-seal-question::before {
- content: "\e243";
-}
-
-.fa-phone-volume::before {
- content: "\f2a0";
-}
-
-.fa-volume-control-phone::before {
- content: "\f2a0";
-}
-
-.fa-disc-drive::before {
- content: "\f8b5";
-}
-
-.fa-hat-cowboy-side::before {
- content: "\f8c1";
-}
-
-.fa-table-rows::before {
- content: "\e292";
-}
-
-.fa-rows::before {
- content: "\e292";
-}
-
-.fa-location-exclamation::before {
- content: "\f608";
-}
-
-.fa-map-marker-exclamation::before {
- content: "\f608";
-}
-
-.fa-face-fearful::before {
- content: "\e375";
-}
-
-.fa-clipboard-user::before {
- content: "\f7f3";
-}
-
-.fa-bus-school::before {
- content: "\f5dd";
-}
-
-.fa-film-slash::before {
- content: "\e179";
-}
-
-.fa-square-arrow-down-right::before {
- content: "\e262";
-}
-
-.fa-book-sparkles::before {
- content: "\f6b8";
-}
-
-.fa-book-spells::before {
- content: "\f6b8";
-}
-
-.fa-washing-machine::before {
- content: "\f898";
-}
-
-.fa-washer::before {
- content: "\f898";
-}
-
-.fa-child::before {
- content: "\f1ae";
-}
-
-.fa-lira-sign::before {
- content: "\f195";
-}
-
-.fa-user-visor::before {
- content: "\e04c";
-}
-
-.fa-file-plus-minus::before {
- content: "\e177";
-}
-
-.fa-chess-clock-flip::before {
- content: "\f43e";
-}
-
-.fa-chess-clock-alt::before {
- content: "\f43e";
-}
-
-.fa-satellite::before {
- content: "\f7bf";
-}
-
-.fa-plane-lock::before {
- content: "\e558";
-}
-
-.fa-steering-wheel::before {
- content: "\f622";
-}
-
-.fa-tag::before {
- content: "\f02b";
-}
-
-.fa-stretcher::before {
- content: "\f825";
-}
-
-.fa-book-section::before {
- content: "\e0c1";
-}
-
-.fa-book-law::before {
- content: "\e0c1";
-}
-
-.fa-inboxes::before {
- content: "\e1bb";
-}
-
-.fa-coffee-bean::before {
- content: "\e13e";
-}
-
-.fa-brackets-curly::before {
- content: "\f7ea";
-}
-
-.fa-ellipsis-stroke-vertical::before {
- content: "\f39c";
-}
-
-.fa-ellipsis-v-alt::before {
- content: "\f39c";
-}
-
-.fa-comment::before {
- content: "\f075";
-}
-
-.fa-square-1::before {
- content: "\e256";
-}
-
-.fa-cake-candles::before {
- content: "\f1fd";
-}
-
-.fa-birthday-cake::before {
- content: "\f1fd";
-}
-
-.fa-cake::before {
- content: "\f1fd";
-}
-
-.fa-head-side::before {
- content: "\f6e9";
-}
-
-.fa-envelope::before {
- content: "\f0e0";
-}
-
-.fa-dolly-empty::before {
- content: "\f473";
-}
-
-.fa-face-tissue::before {
- content: "\e39c";
-}
-
-.fa-angles-up::before {
- content: "\f102";
-}
-
-.fa-angle-double-up::before {
- content: "\f102";
-}
-
-.fa-paperclip::before {
- content: "\f0c6";
-}
-
-.fa-chart-line-down::before {
- content: "\f64d";
-}
-
-.fa-arrow-right-to-city::before {
- content: "\e4b3";
-}
-
-.fa-lock-a::before {
- content: "\e422";
-}
-
-.fa-ribbon::before {
- content: "\f4d6";
-}
-
-.fa-lungs::before {
- content: "\f604";
-}
-
-.fa-person-pinball::before {
- content: "\e21d";
-}
-
-.fa-arrow-up-9-1::before {
- content: "\f887";
-}
-
-.fa-sort-numeric-up-alt::before {
- content: "\f887";
-}
-
-.fa-apple-core::before {
- content: "\e08f";
-}
-
-.fa-circle-y::before {
- content: "\e12f";
-}
-
-.fa-h6::before {
- content: "\e413";
-}
-
-.fa-litecoin-sign::before {
- content: "\e1d3";
-}
-
-.fa-circle-small::before {
- content: "\e122";
-}
-
-.fa-border-none::before {
- content: "\f850";
-}
-
-.fa-arrow-turn-down-left::before {
- content: "\e2e1";
-}
-
-.fa-circle-nodes::before {
- content: "\e4e2";
-}
-
-.fa-parachute-box::before {
- content: "\f4cd";
-}
-
-.fa-message-medical::before {
- content: "\f7f4";
-}
-
-.fa-comment-alt-medical::before {
- content: "\f7f4";
-}
-
-.fa-rugby-ball::before {
- content: "\e3c6";
-}
-
-.fa-comment-music::before {
- content: "\f8b0";
-}
-
-.fa-indent::before {
- content: "\f03c";
-}
-
-.fa-tree-deciduous::before {
- content: "\f400";
-}
-
-.fa-tree-alt::before {
- content: "\f400";
-}
-
-.fa-puzzle-piece-simple::before {
- content: "\e231";
-}
-
-.fa-puzzle-piece-alt::before {
- content: "\e231";
-}
-
-.fa-truck-field-un::before {
- content: "\e58e";
-}
-
-.fa-nfc-trash::before {
- content: "\e1fd";
-}
-
-.fa-hourglass::before {
- content: "\f254";
-}
-
-.fa-hourglass-empty::before {
- content: "\f254";
-}
-
-.fa-mountain::before {
- content: "\f6fc";
-}
-
-.fa-file-xmark::before {
- content: "\f317";
-}
-
-.fa-file-times::before {
- content: "\f317";
-}
-
-.fa-house-heart::before {
- content: "\f4c9";
-}
-
-.fa-home-heart::before {
- content: "\f4c9";
-}
-
-.fa-house-chimney-blank::before {
- content: "\e3b0";
-}
-
-.fa-meter-bolt::before {
- content: "\e1e9";
-}
-
-.fa-user-doctor::before {
- content: "\f0f0";
-}
-
-.fa-user-md::before {
- content: "\f0f0";
-}
-
-.fa-slash-back::before {
- content: "\5c";
-}
-
-.fa-circle-info::before {
- content: "\f05a";
-}
-
-.fa-info-circle::before {
- content: "\f05a";
-}
-
-.fa-fishing-rod::before {
- content: "\e3a8";
-}
-
-.fa-hammer-crash::before {
- content: "\e414";
-}
-
-.fa-message-heart::before {
- content: "\e5c9";
-}
-
-.fa-cloud-meatball::before {
- content: "\f73b";
-}
-
-.fa-camera-polaroid::before {
- content: "\f8aa";
-}
-
-.fa-camera::before {
- content: "\f030";
-}
-
-.fa-camera-alt::before {
- content: "\f030";
-}
-
-.fa-square-virus::before {
- content: "\e578";
-}
-
-.fa-cart-arrow-up::before {
- content: "\e3ee";
-}
-
-.fa-meteor::before {
- content: "\f753";
-}
-
-.fa-car-on::before {
- content: "\e4dd";
-}
-
-.fa-sleigh::before {
- content: "\f7cc";
-}
-
-.fa-arrow-down-1-9::before {
- content: "\f162";
-}
-
-.fa-sort-numeric-asc::before {
- content: "\f162";
-}
-
-.fa-sort-numeric-down::before {
- content: "\f162";
-}
-
-.fa-buoy-mooring::before {
- content: "\e5b6";
-}
-
-.fa-square-4::before {
- content: "\e259";
-}
-
-.fa-hand-holding-droplet::before {
- content: "\f4c1";
-}
-
-.fa-hand-holding-water::before {
- content: "\f4c1";
-}
-
-.fa-tricycle-adult::before {
- content: "\e5c4";
-}
-
-.fa-waveform::before {
- content: "\f8f1";
-}
-
-.fa-water::before {
- content: "\f773";
-}
-
-.fa-star-sharp-half-stroke::before {
- content: "\e28d";
-}
-
-.fa-star-sharp-half-alt::before {
- content: "\e28d";
-}
-
-.fa-nfc-signal::before {
- content: "\e1fb";
-}
-
-.fa-plane-prop::before {
- content: "\e22b";
-}
-
-.fa-calendar-check::before {
- content: "\f274";
-}
-
-.fa-clock-desk::before {
- content: "\e134";
-}
-
-.fa-calendar-clock::before {
- content: "\e0d2";
-}
-
-.fa-calendar-time::before {
- content: "\e0d2";
-}
-
-.fa-braille::before {
- content: "\f2a1";
-}
-
-.fa-prescription-bottle-medical::before {
- content: "\f486";
-}
-
-.fa-prescription-bottle-alt::before {
- content: "\f486";
-}
-
-.fa-plate-utensils::before {
- content: "\e43b";
-}
-
-.fa-family-pants::before {
- content: "\e302";
-}
-
-.fa-hose-reel::before {
- content: "\e41a";
-}
-
-.fa-house-window::before {
- content: "\e3b3";
-}
-
-.fa-landmark::before {
- content: "\f66f";
-}
-
-.fa-truck::before {
- content: "\f0d1";
-}
-
-.fa-crosshairs::before {
- content: "\f05b";
-}
-
-.fa-cloud-rainbow::before {
- content: "\f73e";
-}
-
-.fa-person-cane::before {
- content: "\e53c";
-}
-
-.fa-alien::before {
- content: "\f8f5";
-}
-
-.fa-tent::before {
- content: "\e57d";
-}
-
-.fa-vest-patches::before {
- content: "\e086";
-}
-
-.fa-people-dress-simple::before {
- content: "\e218";
-}
-
-.fa-check-double::before {
- content: "\f560";
-}
-
-.fa-arrow-down-a-z::before {
- content: "\f15d";
-}
-
-.fa-sort-alpha-asc::before {
- content: "\f15d";
-}
-
-.fa-sort-alpha-down::before {
- content: "\f15d";
-}
-
-.fa-bowling-ball-pin::before {
- content: "\e0c3";
-}
-
-.fa-bell-school-slash::before {
- content: "\f5d6";
-}
-
-.fa-plus-large::before {
- content: "\e59e";
-}
-
-.fa-money-bill-wheat::before {
- content: "\e52a";
-}
-
-.fa-camera-viewfinder::before {
- content: "\e0da";
-}
-
-.fa-screenshot::before {
- content: "\e0da";
-}
-
-.fa-message-music::before {
- content: "\f8af";
-}
-
-.fa-comment-alt-music::before {
- content: "\f8af";
-}
-
-.fa-car-building::before {
- content: "\f859";
-}
-
-.fa-border-bottom-right::before {
- content: "\f854";
-}
-
-.fa-border-style-alt::before {
- content: "\f854";
-}
-
-.fa-octagon::before {
- content: "\f306";
-}
-
-.fa-comment-arrow-up-right::before {
- content: "\e145";
-}
-
-.fa-octagon-divide::before {
- content: "\e203";
-}
-
-.fa-cookie::before {
- content: "\f563";
-}
-
-.fa-arrow-rotate-left::before {
- content: "\f0e2";
-}
-
-.fa-arrow-left-rotate::before {
- content: "\f0e2";
-}
-
-.fa-arrow-rotate-back::before {
- content: "\f0e2";
-}
-
-.fa-arrow-rotate-backward::before {
- content: "\f0e2";
-}
-
-.fa-undo::before {
- content: "\f0e2";
-}
-
-.fa-tv-music::before {
- content: "\f8e6";
-}
-
-.fa-hard-drive::before {
- content: "\f0a0";
-}
-
-.fa-hdd::before {
- content: "\f0a0";
-}
-
-.fa-reel::before {
- content: "\e238";
-}
-
-.fa-face-grin-squint-tears::before {
- content: "\f586";
-}
-
-.fa-grin-squint-tears::before {
- content: "\f586";
-}
-
-.fa-dumbbell::before {
- content: "\f44b";
-}
-
-.fa-rectangle-list::before {
- content: "\f022";
-}
-
-.fa-list-alt::before {
- content: "\f022";
-}
-
-.fa-tarp-droplet::before {
- content: "\e57c";
-}
-
-.fa-alarm-exclamation::before {
- content: "\f843";
-}
-
-.fa-house-medical-circle-check::before {
- content: "\e511";
-}
-
-.fa-traffic-cone::before {
- content: "\f636";
-}
-
-.fa-grate::before {
- content: "\e193";
-}
-
-.fa-arrow-down-right::before {
- content: "\e093";
-}
-
-.fa-person-skiing-nordic::before {
- content: "\f7ca";
-}
-
-.fa-skiing-nordic::before {
- content: "\f7ca";
-}
-
-.fa-calendar-plus::before {
- content: "\f271";
-}
-
-.fa-person-from-portal::before {
- content: "\e023";
-}
-
-.fa-portal-exit::before {
- content: "\e023";
-}
-
-.fa-plane-arrival::before {
- content: "\f5af";
-}
-
-.fa-cowbell-circle-plus::before {
- content: "\f8b4";
-}
-
-.fa-cowbell-more::before {
- content: "\f8b4";
-}
-
-.fa-circle-left::before {
- content: "\f359";
-}
-
-.fa-arrow-alt-circle-left::before {
- content: "\f359";
-}
-
-.fa-distribute-spacing-vertical::before {
- content: "\e366";
-}
-
-.fa-signal-bars-fair::before {
- content: "\f692";
-}
-
-.fa-signal-alt-2::before {
- content: "\f692";
-}
-
-.fa-sportsball::before {
- content: "\e44b";
-}
-
-.fa-game-console-handheld-crank::before {
- content: "\e5b9";
-}
-
-.fa-train-subway::before {
- content: "\f239";
-}
-
-.fa-subway::before {
- content: "\f239";
-}
-
-.fa-chart-gantt::before {
- content: "\e0e4";
-}
-
-.fa-face-smile-upside-down::before {
- content: "\e395";
-}
-
-.fa-ball-pile::before {
- content: "\f77e";
-}
-
-.fa-badge-dollar::before {
- content: "\f645";
-}
-
-.fa-money-bills-simple::before {
- content: "\e1f4";
-}
-
-.fa-money-bills-alt::before {
- content: "\e1f4";
-}
-
-.fa-list-timeline::before {
- content: "\e1d1";
-}
-
-.fa-indian-rupee-sign::before {
- content: "\e1bc";
-}
-
-.fa-indian-rupee::before {
- content: "\e1bc";
-}
-
-.fa-inr::before {
- content: "\e1bc";
-}
-
-.fa-crop-simple::before {
- content: "\f565";
-}
-
-.fa-crop-alt::before {
- content: "\f565";
-}
-
-.fa-money-bill-1::before {
- content: "\f3d1";
-}
-
-.fa-money-bill-alt::before {
- content: "\f3d1";
-}
-
-.fa-left-long::before {
- content: "\f30a";
-}
-
-.fa-long-arrow-alt-left::before {
- content: "\f30a";
-}
-
-.fa-keyboard-down::before {
- content: "\e1c2";
-}
-
-.fa-circle-up-right::before {
- content: "\e129";
-}
-
-.fa-cloud-bolt-moon::before {
- content: "\f76d";
-}
-
-.fa-thunderstorm-moon::before {
- content: "\f76d";
-}
-
-.fa-dna::before {
- content: "\f471";
-}
-
-.fa-virus-slash::before {
- content: "\e075";
-}
-
-.fa-bracket-round-right::before {
- content: "\29";
-}
-
-.fa-circle-5::before {
- content: "\e0f2";
-}
-
-.fa-minus::before {
- content: "\f068";
-}
-
-.fa-subtract::before {
- content: "\f068";
-}
-
-.fa-fire-flame::before {
- content: "\f6df";
-}
-
-.fa-flame::before {
- content: "\f6df";
-}
-
-.fa-right-to-line::before {
- content: "\f34c";
-}
-
-.fa-arrow-alt-to-right::before {
- content: "\f34c";
-}
-
-.fa-gif::before {
- content: "\e190";
-}
-
-.fa-chess::before {
- content: "\f439";
-}
-
-.fa-trash-slash::before {
- content: "\e2b3";
-}
-
-.fa-arrow-left-long::before {
- content: "\f177";
-}
-
-.fa-long-arrow-left::before {
- content: "\f177";
-}
-
-.fa-plug-circle-check::before {
- content: "\e55c";
-}
-
-.fa-font-case::before {
- content: "\f866";
-}
-
-.fa-street-view::before {
- content: "\f21d";
-}
-
-.fa-arrow-down-left::before {
- content: "\e091";
-}
-
-.fa-franc-sign::before {
- content: "\e18f";
-}
-
-.fa-flask-round-poison::before {
- content: "\f6e0";
-}
-
-.fa-flask-poison::before {
- content: "\f6e0";
-}
-
-.fa-volume-off::before {
- content: "\f026";
-}
-
-.fa-book-circle-arrow-right::before {
- content: "\e0bc";
-}
-
-.fa-chart-user::before {
- content: "\f6a3";
-}
-
-.fa-user-chart::before {
- content: "\f6a3";
-}
-
-.fa-hands-asl-interpreting::before {
- content: "\f2a3";
-}
-
-.fa-american-sign-language-interpreting::before {
- content: "\f2a3";
-}
-
-.fa-asl-interpreting::before {
- content: "\f2a3";
-}
-
-.fa-hands-american-sign-language-interpreting::before {
- content: "\f2a3";
-}
-
-.fa-presentation-screen::before {
- content: "\f685";
-}
-
-.fa-presentation::before {
- content: "\f685";
-}
-
-.fa-circle-bolt::before {
- content: "\e0fe";
-}
-
-.fa-face-smile-halo::before {
- content: "\e38f";
-}
-
-.fa-cart-circle-arrow-down::before {
- content: "\e3ef";
-}
-
-.fa-house-person-return::before {
- content: "\e011";
-}
-
-.fa-house-person-arrive::before {
- content: "\e011";
-}
-
-.fa-house-return::before {
- content: "\e011";
-}
-
-.fa-message-xmark::before {
- content: "\f4ab";
-}
-
-.fa-comment-alt-times::before {
- content: "\f4ab";
-}
-
-.fa-message-times::before {
- content: "\f4ab";
-}
-
-.fa-file-certificate::before {
- content: "\f5f3";
-}
-
-.fa-file-award::before {
- content: "\f5f3";
-}
-
-.fa-user-doctor-hair-long::before {
- content: "\e459";
-}
-
-.fa-camera-security::before {
- content: "\f8fe";
-}
-
-.fa-camera-home::before {
- content: "\f8fe";
-}
-
-.fa-gear::before {
- content: "\f013";
-}
-
-.fa-cog::before {
- content: "\f013";
-}
-
-.fa-droplet-slash::before {
- content: "\f5c7";
-}
-
-.fa-tint-slash::before {
- content: "\f5c7";
-}
-
-.fa-book-heart::before {
- content: "\f499";
-}
-
-.fa-mosque::before {
- content: "\f678";
-}
-
-.fa-duck::before {
- content: "\f6d8";
-}
-
-.fa-mosquito::before {
- content: "\e52b";
-}
-
-.fa-star-of-david::before {
- content: "\f69a";
-}
-
-.fa-flag-swallowtail::before {
- content: "\f74c";
-}
-
-.fa-flag-alt::before {
- content: "\f74c";
-}
-
-.fa-person-military-rifle::before {
- content: "\e54b";
-}
-
-.fa-car-garage::before {
- content: "\f5e2";
-}
-
-.fa-cart-shopping::before {
- content: "\f07a";
-}
-
-.fa-shopping-cart::before {
- content: "\f07a";
-}
-
-.fa-book-font::before {
- content: "\e0bf";
-}
-
-.fa-shield-plus::before {
- content: "\e24a";
-}
-
-.fa-vials::before {
- content: "\f493";
-}
-
-.fa-eye-dropper-full::before {
- content: "\e172";
-}
-
-.fa-distribute-spacing-horizontal::before {
- content: "\e365";
-}
-
-.fa-tablet-rugged::before {
- content: "\f48f";
-}
-
-.fa-temperature-snow::before {
- content: "\f768";
-}
-
-.fa-temperature-frigid::before {
- content: "\f768";
-}
-
-.fa-moped::before {
- content: "\e3b9";
-}
-
-.fa-face-smile-plus::before {
- content: "\f5b9";
-}
-
-.fa-smile-plus::before {
- content: "\f5b9";
-}
-
-.fa-radio-tuner::before {
- content: "\f8d8";
-}
-
-.fa-radio-alt::before {
- content: "\f8d8";
-}
-
-.fa-face-swear::before {
- content: "\e399";
-}
-
-.fa-water-arrow-down::before {
- content: "\f774";
-}
-
-.fa-water-lower::before {
- content: "\f774";
-}
-
-.fa-scanner-touchscreen::before {
- content: "\f48a";
-}
-
-.fa-circle-7::before {
- content: "\e0f4";
-}
-
-.fa-plug-circle-plus::before {
- content: "\e55f";
-}
-
-.fa-person-ski-jumping::before {
- content: "\f7c7";
-}
-
-.fa-ski-jump::before {
- content: "\f7c7";
-}
-
-.fa-place-of-worship::before {
- content: "\f67f";
-}
-
-.fa-water-arrow-up::before {
- content: "\f775";
-}
-
-.fa-water-rise::before {
- content: "\f775";
-}
-
-.fa-waveform-lines::before {
- content: "\f8f2";
-}
-
-.fa-waveform-path::before {
- content: "\f8f2";
-}
-
-.fa-split::before {
- content: "\e254";
-}
-
-.fa-film-canister::before {
- content: "\f8b7";
-}
-
-.fa-film-cannister::before {
- content: "\f8b7";
-}
-
-.fa-folder-xmark::before {
- content: "\f65f";
-}
-
-.fa-folder-times::before {
- content: "\f65f";
-}
-
-.fa-toilet-paper-blank::before {
- content: "\f71f";
-}
-
-.fa-toilet-paper-alt::before {
- content: "\f71f";
-}
-
-.fa-tablet-screen::before {
- content: "\f3fc";
-}
-
-.fa-tablet-android-alt::before {
- content: "\f3fc";
-}
-
-.fa-hexagon-vertical-nft-slanted::before {
- content: "\e506";
-}
-
-.fa-folder-music::before {
- content: "\e18d";
-}
-
-.fa-display-medical::before {
- content: "\e166";
-}
-
-.fa-desktop-medical::before {
- content: "\e166";
-}
-
-.fa-share-all::before {
- content: "\f367";
-}
-
-.fa-peapod::before {
- content: "\e31c";
-}
-
-.fa-chess-clock::before {
- content: "\f43d";
-}
-
-.fa-axe::before {
- content: "\f6b2";
-}
-
-.fa-square-d::before {
- content: "\e268";
-}
-
-.fa-grip-vertical::before {
- content: "\f58e";
-}
-
-.fa-mobile-signal-out::before {
- content: "\e1f0";
-}
-
-.fa-arrow-turn-up::before {
- content: "\f148";
-}
-
-.fa-level-up::before {
- content: "\f148";
-}
-
-.fa-u::before {
- content: "\55";
-}
-
-.fa-arrow-up-from-dotted-line::before {
- content: "\e09b";
-}
-
-.fa-square-root-variable::before {
- content: "\f698";
-}
-
-.fa-square-root-alt::before {
- content: "\f698";
-}
-
-.fa-light-switch-on::before {
- content: "\e019";
-}
-
-.fa-arrow-down-arrow-up::before {
- content: "\f883";
-}
-
-.fa-sort-alt::before {
- content: "\f883";
-}
-
-.fa-raindrops::before {
- content: "\f75c";
-}
-
-.fa-dash::before {
- content: "\e404";
-}
-
-.fa-minus-large::before {
- content: "\e404";
-}
-
-.fa-clock::before {
- content: "\f017";
-}
-
-.fa-clock-four::before {
- content: "\f017";
-}
-
-.fa-input-numeric::before {
- content: "\e1bd";
-}
-
-.fa-truck-tow::before {
- content: "\e2b8";
-}
-
-.fa-backward-step::before {
- content: "\f048";
-}
-
-.fa-step-backward::before {
- content: "\f048";
-}
-
-.fa-pallet::before {
- content: "\f482";
-}
-
-.fa-car-bolt::before {
- content: "\e341";
-}
-
-.fa-arrows-maximize::before {
- content: "\f31d";
-}
-
-.fa-expand-arrows::before {
- content: "\f31d";
-}
-
-.fa-faucet::before {
- content: "\e005";
-}
-
-.fa-cloud-sleet::before {
- content: "\f741";
-}
-
-.fa-lamp-street::before {
- content: "\e1c5";
-}
-
-.fa-list-radio::before {
- content: "\e1d0";
-}
-
-.fa-pen-nib-slash::before {
- content: "\e4a1";
-}
-
-.fa-baseball-bat-ball::before {
- content: "\f432";
-}
-
-.fa-square-up-left::before {
- content: "\e282";
-}
-
-.fa-overline::before {
- content: "\f876";
-}
-
-.fa-s::before {
- content: "\53";
-}
-
-.fa-timeline::before {
- content: "\e29c";
-}
-
-.fa-keyboard::before {
- content: "\f11c";
-}
-
-.fa-arrows-from-dotted-line::before {
- content: "\e0a3";
-}
-
-.fa-usb-drive::before {
- content: "\f8e9";
-}
-
-.fa-ballot::before {
- content: "\f732";
-}
-
-.fa-caret-down::before {
- content: "\f0d7";
-}
-
-.fa-location-dot-slash::before {
- content: "\f605";
-}
-
-.fa-map-marker-alt-slash::before {
- content: "\f605";
-}
-
-.fa-cards::before {
- content: "\e3ed";
-}
-
-.fa-house-chimney-medical::before {
- content: "\f7f2";
-}
-
-.fa-clinic-medical::before {
- content: "\f7f2";
-}
-
-.fa-boxing-glove::before {
- content: "\f438";
-}
-
-.fa-glove-boxing::before {
- content: "\f438";
-}
-
-.fa-temperature-three-quarters::before {
- content: "\f2c8";
-}
-
-.fa-temperature-3::before {
- content: "\f2c8";
-}
-
-.fa-thermometer-3::before {
- content: "\f2c8";
-}
-
-.fa-thermometer-three-quarters::before {
- content: "\f2c8";
-}
-
-.fa-bell-school::before {
- content: "\f5d5";
-}
-
-.fa-mobile-screen::before {
- content: "\f3cf";
-}
-
-.fa-mobile-android-alt::before {
- content: "\f3cf";
-}
-
-.fa-plane-up::before {
- content: "\e22d";
-}
-
-.fa-folder-heart::before {
- content: "\e189";
-}
-
-.fa-circle-location-arrow::before {
- content: "\f602";
-}
-
-.fa-location-circle::before {
- content: "\f602";
-}
-
-.fa-face-head-bandage::before {
- content: "\e37a";
-}
-
-.fa-sushi-roll::before {
- content: "\e48b";
-}
-
-.fa-maki-roll::before {
- content: "\e48b";
-}
-
-.fa-makizushi::before {
- content: "\e48b";
-}
-
-.fa-car-bump::before {
- content: "\f5e0";
-}
-
-.fa-piggy-bank::before {
- content: "\f4d3";
-}
-
-.fa-racquet::before {
- content: "\f45a";
-}
-
-.fa-car-mirrors::before {
- content: "\e343";
-}
-
-.fa-industry-windows::before {
- content: "\f3b3";
-}
-
-.fa-industry-alt::before {
- content: "\f3b3";
-}
-
-.fa-bolt-auto::before {
- content: "\e0b6";
-}
-
-.fa-battery-half::before {
- content: "\f242";
-}
-
-.fa-battery-3::before {
- content: "\f242";
-}
-
-.fa-flux-capacitor::before {
- content: "\f8ba";
-}
-
-.fa-mountain-city::before {
- content: "\e52e";
-}
-
-.fa-coins::before {
- content: "\f51e";
-}
-
-.fa-honey-pot::before {
- content: "\e418";
-}
-
-.fa-olive::before {
- content: "\e316";
-}
-
-.fa-khanda::before {
- content: "\f66d";
-}
-
-.fa-filter-list::before {
- content: "\e17c";
-}
-
-.fa-outlet::before {
- content: "\e01c";
-}
-
-.fa-sliders::before {
- content: "\f1de";
-}
-
-.fa-sliders-h::before {
- content: "\f1de";
-}
-
-.fa-cauldron::before {
- content: "\f6bf";
-}
-
-.fa-people::before {
- content: "\e216";
-}
-
-.fa-folder-tree::before {
- content: "\f802";
-}
-
-.fa-network-wired::before {
- content: "\f6ff";
-}
-
-.fa-croissant::before {
- content: "\f7f6";
-}
-
-.fa-map-pin::before {
- content: "\f276";
-}
-
-.fa-hamsa::before {
- content: "\f665";
-}
-
-.fa-cent-sign::before {
- content: "\e3f5";
-}
-
-.fa-swords-laser::before {
- content: "\e03d";
-}
-
-.fa-flask::before {
- content: "\f0c3";
-}
-
-.fa-person-pregnant::before {
- content: "\e31e";
-}
-
-.fa-square-u::before {
- content: "\e281";
-}
-
-.fa-wand-sparkles::before {
- content: "\f72b";
-}
-
-.fa-router::before {
- content: "\f8da";
-}
-
-.fa-ellipsis-vertical::before {
- content: "\f142";
-}
-
-.fa-ellipsis-v::before {
- content: "\f142";
-}
-
-.fa-sword-laser-alt::before {
- content: "\e03c";
-}
-
-.fa-ticket::before {
- content: "\f145";
-}
-
-.fa-power-off::before {
- content: "\f011";
-}
-
-.fa-coin::before {
- content: "\f85c";
-}
-
-.fa-laptop-slash::before {
- content: "\e1c7";
-}
-
-.fa-right-long::before {
- content: "\f30b";
-}
-
-.fa-long-arrow-alt-right::before {
- content: "\f30b";
-}
-
-.fa-circle-b::before {
- content: "\e0fd";
-}
-
-.fa-person-dress-simple::before {
- content: "\e21c";
-}
-
-.fa-pipe-collar::before {
- content: "\e437";
-}
-
-.fa-lights-holiday::before {
- content: "\f7b2";
-}
-
-.fa-citrus::before {
- content: "\e2f4";
-}
-
-.fa-flag-usa::before {
- content: "\f74d";
-}
-
-.fa-laptop-file::before {
- content: "\e51d";
-}
-
-.fa-tty::before {
- content: "\f1e4";
-}
-
-.fa-teletype::before {
- content: "\f1e4";
-}
-
-.fa-chart-tree-map::before {
- content: "\e0ea";
-}
-
-.fa-diagram-next::before {
- content: "\e476";
-}
-
-.fa-person-rifle::before {
- content: "\e54e";
-}
-
-.fa-clock-five-thirty::before {
- content: "\e34a";
-}
-
-.fa-pipe-valve::before {
- content: "\e439";
-}
-
-.fa-arrow-up-from-arc::before {
- content: "\e4b4";
-}
-
-.fa-face-spiral-eyes::before {
- content: "\e485";
-}
-
-.fa-compress-wide::before {
- content: "\f326";
-}
-
-.fa-circle-phone-hangup::before {
- content: "\e11d";
-}
-
-.fa-phone-circle-down::before {
- content: "\e11d";
-}
-
-.fa-house-medical-circle-exclamation::before {
- content: "\e512";
-}
-
-.fa-badminton::before {
- content: "\e33a";
-}
-
-.fa-closed-captioning::before {
- content: "\f20a";
-}
-
-.fa-person-hiking::before {
- content: "\f6ec";
-}
-
-.fa-hiking::before {
- content: "\f6ec";
-}
-
-.fa-right-from-line::before {
- content: "\f347";
-}
-
-.fa-arrow-alt-from-left::before {
- content: "\f347";
-}
-
-.fa-venus-double::before {
- content: "\f226";
-}
-
-.fa-images::before {
- content: "\f302";
-}
-
-.fa-calculator::before {
- content: "\f1ec";
-}
-
-.fa-shuttlecock::before {
- content: "\f45b";
-}
-
-.fa-user-hair::before {
- content: "\e45a";
-}
-
-.fa-eye-evil::before {
- content: "\f6db";
-}
-
-.fa-people-pulling::before {
- content: "\e535";
-}
-
-.fa-n::before {
- content: "\4e";
-}
-
-.fa-garage::before {
- content: "\e009";
-}
-
-.fa-cable-car::before {
- content: "\f7da";
-}
-
-.fa-tram::before {
- content: "\f7da";
-}
-
-.fa-shovel-snow::before {
- content: "\f7c3";
-}
-
-.fa-cloud-rain::before {
- content: "\f73d";
-}
-
-.fa-face-lying::before {
- content: "\e37e";
-}
-
-.fa-sprinkler::before {
- content: "\e035";
-}
-
-.fa-building-circle-xmark::before {
- content: "\e4d4";
-}
-
-.fa-person-sledding::before {
- content: "\f7cb";
-}
-
-.fa-sledding::before {
- content: "\f7cb";
-}
-
-.fa-game-console-handheld::before {
- content: "\f8bb";
-}
-
-.fa-ship::before {
- content: "\f21a";
-}
-
-.fa-clock-six-thirty::before {
- content: "\e353";
-}
-
-.fa-battery-slash::before {
- content: "\f377";
-}
-
-.fa-tugrik-sign::before {
- content: "\e2ba";
-}
-
-.fa-arrows-down-to-line::before {
- content: "\e4b8";
-}
-
-.fa-download::before {
- content: "\f019";
-}
-
-.fa-shelves::before {
- content: "\f480";
-}
-
-.fa-inventory::before {
- content: "\f480";
-}
-
-.fa-cloud-snow::before {
- content: "\f742";
-}
-
-.fa-face-grin::before {
- content: "\f580";
-}
-
-.fa-grin::before {
- content: "\f580";
-}
-
-.fa-delete-left::before {
- content: "\f55a";
-}
-
-.fa-backspace::before {
- content: "\f55a";
-}
-
-.fa-oven::before {
- content: "\e01d";
-}
-
-.fa-eye-dropper::before {
- content: "\f1fb";
-}
-
-.fa-eye-dropper-empty::before {
- content: "\f1fb";
-}
-
-.fa-eyedropper::before {
- content: "\f1fb";
-}
-
-.fa-comment-captions::before {
- content: "\e146";
-}
-
-.fa-comments-question::before {
- content: "\e14e";
-}
-
-.fa-scribble::before {
- content: "\e23f";
-}
-
-.fa-rotate-exclamation::before {
- content: "\e23c";
-}
-
-.fa-file-circle-check::before {
- content: "\e5a0";
-}
-
-.fa-glass::before {
- content: "\f804";
-}
-
-.fa-loader::before {
- content: "\e1d4";
-}
-
-.fa-forward::before {
- content: "\f04e";
-}
-
-.fa-user-pilot::before {
- content: "\e2c0";
-}
-
-.fa-mobile::before {
- content: "\f3ce";
-}
-
-.fa-mobile-android::before {
- content: "\f3ce";
-}
-
-.fa-mobile-phone::before {
- content: "\f3ce";
-}
-
-.fa-code-pull-request-closed::before {
- content: "\e3f9";
-}
-
-.fa-face-meh::before {
- content: "\f11a";
-}
-
-.fa-meh::before {
- content: "\f11a";
-}
-
-.fa-align-center::before {
- content: "\f037";
-}
-
-.fa-book-skull::before {
- content: "\f6b7";
-}
-
-.fa-book-dead::before {
- content: "\f6b7";
-}
-
-.fa-id-card::before {
- content: "\f2c2";
-}
-
-.fa-drivers-license::before {
- content: "\f2c2";
-}
-
-.fa-face-dotted::before {
- content: "\e47f";
-}
-
-.fa-face-worried::before {
- content: "\e3a3";
-}
-
-.fa-outdent::before {
- content: "\f03b";
-}
-
-.fa-dedent::before {
- content: "\f03b";
-}
-
-.fa-heart-circle-exclamation::before {
- content: "\e4fe";
-}
-
-.fa-house::before {
- content: "\f015";
-}
-
-.fa-home::before {
- content: "\f015";
-}
-
-.fa-home-alt::before {
- content: "\f015";
-}
-
-.fa-home-lg-alt::before {
- content: "\f015";
-}
-
-.fa-vector-circle::before {
- content: "\e2c6";
-}
-
-.fa-car-circle-bolt::before {
- content: "\e342";
-}
-
-.fa-calendar-week::before {
- content: "\f784";
-}
-
-.fa-flying-disc::before {
- content: "\e3a9";
-}
-
-.fa-laptop-medical::before {
- content: "\f812";
-}
-
-.fa-square-down-right::before {
- content: "\e26c";
-}
-
-.fa-b::before {
- content: "\42";
-}
-
-.fa-seat-airline::before {
- content: "\e244";
-}
-
-.fa-moon-over-sun::before {
- content: "\f74a";
-}
-
-.fa-eclipse-alt::before {
- content: "\f74a";
-}
-
-.fa-pipe::before {
- content: "\7c";
-}
-
-.fa-file-medical::before {
- content: "\f477";
-}
-
-.fa-potato::before {
- content: "\e440";
-}
-
-.fa-dice-one::before {
- content: "\f525";
-}
-
-.fa-circle-a::before {
- content: "\e0f7";
-}
-
-.fa-helmet-battle::before {
- content: "\f6eb";
-}
-
-.fa-butter::before {
- content: "\e3e4";
-}
-
-.fa-blanket-fire::before {
- content: "\e3da";
-}
-
-.fa-kiwi-bird::before {
- content: "\f535";
-}
-
-.fa-castle::before {
- content: "\e0de";
-}
-
-.fa-golf-club::before {
- content: "\f451";
-}
-
-.fa-arrow-right-arrow-left::before {
- content: "\f0ec";
-}
-
-.fa-exchange::before {
- content: "\f0ec";
-}
-
-.fa-rotate-right::before {
- content: "\f2f9";
-}
-
-.fa-redo-alt::before {
- content: "\f2f9";
-}
-
-.fa-rotate-forward::before {
- content: "\f2f9";
-}
-
-.fa-utensils::before {
- content: "\f2e7";
-}
-
-.fa-cutlery::before {
- content: "\f2e7";
-}
-
-.fa-arrow-up-wide-short::before {
- content: "\f161";
-}
-
-.fa-sort-amount-up::before {
- content: "\f161";
-}
-
-.fa-balloons::before {
- content: "\e2e4";
-}
-
-.fa-mill-sign::before {
- content: "\e1ed";
-}
-
-.fa-bowl-rice::before {
- content: "\e2eb";
-}
-
-.fa-timeline-arrow::before {
- content: "\e29d";
-}
-
-.fa-skull::before {
- content: "\f54c";
-}
-
-.fa-game-board-simple::before {
- content: "\f868";
-}
-
-.fa-game-board-alt::before {
- content: "\f868";
-}
-
-.fa-circle-video::before {
- content: "\e12b";
-}
-
-.fa-video-circle::before {
- content: "\e12b";
-}
-
-.fa-chart-scatter-bubble::before {
- content: "\e0e9";
-}
-
-.fa-house-turret::before {
- content: "\e1b4";
-}
-
-.fa-banana::before {
- content: "\e2e5";
-}
-
-.fa-hand-holding-skull::before {
- content: "\e1a4";
-}
-
-.fa-people-dress::before {
- content: "\e217";
-}
-
-.fa-loveseat::before {
- content: "\f4cc";
-}
-
-.fa-couch-small::before {
- content: "\f4cc";
-}
-
-.fa-tower-broadcast::before {
- content: "\f519";
-}
-
-.fa-broadcast-tower::before {
- content: "\f519";
-}
-
-.fa-truck-pickup::before {
- content: "\f63c";
-}
-
-.fa-block-quote::before {
- content: "\e0b5";
-}
-
-.fa-up-long::before {
- content: "\f30c";
-}
-
-.fa-long-arrow-alt-up::before {
- content: "\f30c";
-}
-
-.fa-stop::before {
- content: "\f04d";
-}
-
-.fa-code-merge::before {
- content: "\f387";
-}
-
-.fa-money-check-dollar-pen::before {
- content: "\f873";
-}
-
-.fa-money-check-edit-alt::before {
- content: "\f873";
-}
-
-.fa-up-from-line::before {
- content: "\f346";
-}
-
-.fa-arrow-alt-from-bottom::before {
- content: "\f346";
-}
-
-.fa-upload::before {
- content: "\f093";
-}
-
-.fa-hurricane::before {
- content: "\f751";
-}
-
-.fa-people-pants::before {
- content: "\e219";
-}
-
-.fa-mound::before {
- content: "\e52d";
-}
-
-.fa-windsock::before {
- content: "\f777";
-}
-
-.fa-circle-half::before {
- content: "\e110";
-}
-
-.fa-brake-warning::before {
- content: "\e0c7";
-}
-
-.fa-toilet-portable::before {
- content: "\e583";
-}
-
-.fa-compact-disc::before {
- content: "\f51f";
-}
-
-.fa-file-arrow-down::before {
- content: "\f56d";
-}
-
-.fa-file-download::before {
- content: "\f56d";
-}
-
-.fa-saxophone-fire::before {
- content: "\f8db";
-}
-
-.fa-sax-hot::before {
- content: "\f8db";
-}
-
-.fa-camera-web-slash::before {
- content: "\f833";
-}
-
-.fa-webcam-slash::before {
- content: "\f833";
-}
-
-.fa-folder-medical::before {
- content: "\e18c";
-}
-
-.fa-folder-gear::before {
- content: "\e187";
-}
-
-.fa-folder-cog::before {
- content: "\e187";
-}
-
-.fa-hand-wave::before {
- content: "\e1a7";
-}
-
-.fa-arrow-up-arrow-down::before {
- content: "\e099";
-}
-
-.fa-sort-up-down::before {
- content: "\e099";
-}
-
-.fa-caravan::before {
- content: "\f8ff";
-}
-
-.fa-shield-cat::before {
- content: "\e572";
-}
-
-.fa-message-slash::before {
- content: "\f4a9";
-}
-
-.fa-comment-alt-slash::before {
- content: "\f4a9";
-}
-
-.fa-bolt::before {
- content: "\f0e7";
-}
-
-.fa-zap::before {
- content: "\f0e7";
-}
-
-.fa-trash-can-check::before {
- content: "\e2a9";
-}
-
-.fa-glass-water::before {
- content: "\e4f4";
-}
-
-.fa-oil-well::before {
- content: "\e532";
-}
-
-.fa-person-simple::before {
- content: "\e220";
-}
-
-.fa-vault::before {
- content: "\e2c5";
-}
-
-.fa-mars::before {
- content: "\f222";
-}
-
-.fa-toilet::before {
- content: "\f7d8";
-}
-
-.fa-plane-circle-xmark::before {
- content: "\e557";
-}
-
-.fa-yen-sign::before {
- content: "\f157";
-}
-
-.fa-cny::before {
- content: "\f157";
-}
-
-.fa-jpy::before {
- content: "\f157";
-}
-
-.fa-rmb::before {
- content: "\f157";
-}
-
-.fa-yen::before {
- content: "\f157";
-}
-
-.fa-notes::before {
- content: "\e202";
-}
-
-.fa-ruble-sign::before {
- content: "\f158";
-}
-
-.fa-rouble::before {
- content: "\f158";
-}
-
-.fa-rub::before {
- content: "\f158";
-}
-
-.fa-ruble::before {
- content: "\f158";
-}
-
-.fa-trash-undo::before {
- content: "\f895";
-}
-
-.fa-trash-arrow-turn-left::before {
- content: "\f895";
-}
-
-.fa-champagne-glass::before {
- content: "\f79e";
-}
-
-.fa-glass-champagne::before {
- content: "\f79e";
-}
-
-.fa-objects-align-center-horizontal::before {
- content: "\e3bc";
-}
-
-.fa-sun::before {
- content: "\f185";
-}
-
-.fa-trash-can-slash::before {
- content: "\e2ad";
-}
-
-.fa-trash-alt-slash::before {
- content: "\e2ad";
-}
-
-.fa-screen-users::before {
- content: "\f63d";
-}
-
-.fa-users-class::before {
- content: "\f63d";
-}
-
-.fa-guitar::before {
- content: "\f7a6";
-}
-
-.fa-square-arrow-left::before {
- content: "\f33a";
-}
-
-.fa-arrow-square-left::before {
- content: "\f33a";
-}
-
-.fa-square-8::before {
- content: "\e25d";
-}
-
-.fa-face-smile-hearts::before {
- content: "\e390";
-}
-
-.fa-brackets-square::before {
- content: "\f7e9";
-}
-
-.fa-brackets::before {
- content: "\f7e9";
-}
-
-.fa-laptop-arrow-down::before {
- content: "\e1c6";
-}
-
-.fa-hockey-stick-puck::before {
- content: "\e3ae";
-}
-
-.fa-house-tree::before {
- content: "\e1b3";
-}
-
-.fa-signal-fair::before {
- content: "\f68d";
-}
-
-.fa-signal-2::before {
- content: "\f68d";
-}
-
-.fa-face-laugh-wink::before {
- content: "\f59c";
-}
-
-.fa-laugh-wink::before {
- content: "\f59c";
-}
-
-.fa-circle-dollar::before {
- content: "\f2e8";
-}
-
-.fa-dollar-circle::before {
- content: "\f2e8";
-}
-
-.fa-usd-circle::before {
- content: "\f2e8";
-}
-
-.fa-horse-head::before {
- content: "\f7ab";
-}
-
-.fa-arrows-repeat::before {
- content: "\f364";
-}
-
-.fa-repeat-alt::before {
- content: "\f364";
-}
-
-.fa-bore-hole::before {
- content: "\e4c3";
-}
-
-.fa-industry::before {
- content: "\f275";
-}
-
-.fa-image-polaroid::before {
- content: "\f8c4";
-}
-
-.fa-wave-triangle::before {
- content: "\f89a";
-}
-
-.fa-circle-down::before {
- content: "\f358";
-}
-
-.fa-arrow-alt-circle-down::before {
- content: "\f358";
-}
-
-.fa-grill::before {
- content: "\e5a3";
-}
-
-.fa-arrows-turn-to-dots::before {
- content: "\e4c1";
-}
-
-.fa-chart-mixed::before {
- content: "\f643";
-}
-
-.fa-analytics::before {
- content: "\f643";
-}
-
-.fa-florin-sign::before {
- content: "\e184";
-}
-
-.fa-arrow-down-short-wide::before {
- content: "\f884";
-}
-
-.fa-sort-amount-desc::before {
- content: "\f884";
-}
-
-.fa-sort-amount-down-alt::before {
- content: "\f884";
-}
-
-.fa-less-than::before {
- content: "\3c";
-}
-
-.fa-display-code::before {
- content: "\e165";
-}
-
-.fa-desktop-code::before {
- content: "\e165";
-}
-
-.fa-face-drooling::before {
- content: "\e372";
-}
-
-.fa-oil-temperature::before {
- content: "\f614";
-}
-
-.fa-oil-temp::before {
- content: "\f614";
-}
-
-.fa-square-question::before {
- content: "\f2fd";
-}
-
-.fa-question-square::before {
- content: "\f2fd";
-}
-
-.fa-air-conditioner::before {
- content: "\f8f4";
-}
-
-.fa-angle-down::before {
- content: "\f107";
-}
-
-.fa-mountains::before {
- content: "\f6fd";
-}
-
-.fa-omega::before {
- content: "\f67a";
-}
-
-.fa-car-tunnel::before {
- content: "\e4de";
-}
-
-.fa-person-dolly-empty::before {
- content: "\f4d1";
-}
-
-.fa-pan-food::before {
- content: "\e42b";
-}
-
-.fa-head-side-cough::before {
- content: "\e061";
-}
-
-.fa-grip-lines::before {
- content: "\f7a4";
-}
-
-.fa-thumbs-down::before {
- content: "\f165";
-}
-
-.fa-user-lock::before {
- content: "\f502";
-}
-
-.fa-arrow-right-long::before {
- content: "\f178";
-}
-
-.fa-long-arrow-right::before {
- content: "\f178";
-}
-
-.fa-tickets-airline::before {
- content: "\e29b";
-}
-
-.fa-anchor-circle-xmark::before {
- content: "\e4ac";
-}
-
-.fa-ellipsis::before {
- content: "\f141";
-}
-
-.fa-ellipsis-h::before {
- content: "\f141";
-}
-
-.fa-nfc-slash::before {
- content: "\e1fc";
-}
-
-.fa-chess-pawn::before {
- content: "\f443";
-}
-
-.fa-kit-medical::before {
- content: "\f479";
-}
-
-.fa-first-aid::before {
- content: "\f479";
-}
-
-.fa-grid-2-plus::before {
- content: "\e197";
-}
-
-.fa-bells::before {
- content: "\f77f";
-}
-
-.fa-person-through-window::before {
- content: "\e5a9";
-}
-
-.fa-toolbox::before {
- content: "\f552";
-}
-
-.fa-envelope-dot::before {
- content: "\e16f";
-}
-
-.fa-envelope-badge::before {
- content: "\e16f";
-}
-
-.fa-hands-holding-circle::before {
- content: "\e4fb";
-}
-
-.fa-bug::before {
- content: "\f188";
-}
-
-.fa-bowl-chopsticks::before {
- content: "\e2e9";
-}
-
-.fa-credit-card::before {
- content: "\f09d";
-}
-
-.fa-credit-card-alt::before {
- content: "\f09d";
-}
-
-.fa-circle-s::before {
- content: "\e121";
-}
-
-.fa-box-ballot::before {
- content: "\f735";
-}
-
-.fa-car::before {
- content: "\f1b9";
-}
-
-.fa-automobile::before {
- content: "\f1b9";
-}
-
-.fa-hand-holding-hand::before {
- content: "\e4f7";
-}
-
-.fa-user-tie-hair::before {
- content: "\e45f";
-}
-
-.fa-podium-star::before {
- content: "\f758";
-}
-
-.fa-user-hair-mullet::before {
- content: "\e45c";
-}
-
-.fa-business-front::before {
- content: "\e45c";
-}
-
-.fa-party-back::before {
- content: "\e45c";
-}
-
-.fa-trian-balbot::before {
- content: "\e45c";
-}
-
-.fa-microphone-stand::before {
- content: "\f8cb";
-}
-
-.fa-book-open-reader::before {
- content: "\f5da";
-}
-
-.fa-book-reader::before {
- content: "\f5da";
-}
-
-.fa-family-dress::before {
- content: "\e301";
-}
-
-.fa-circle-x::before {
- content: "\e12e";
-}
-
-.fa-cabin::before {
- content: "\e46d";
-}
-
-.fa-mountain-sun::before {
- content: "\e52f";
-}
-
-.fa-chart-simple-horizontal::before {
- content: "\e474";
-}
-
-.fa-arrows-left-right-to-line::before {
- content: "\e4ba";
-}
-
-.fa-hand-back-point-left::before {
- content: "\e19f";
-}
-
-.fa-message-dots::before {
- content: "\f4a3";
-}
-
-.fa-comment-alt-dots::before {
- content: "\f4a3";
-}
-
-.fa-messaging::before {
- content: "\f4a3";
-}
-
-.fa-file-heart::before {
- content: "\e176";
-}
-
-.fa-beer-mug::before {
- content: "\e0b3";
-}
-
-.fa-beer-foam::before {
- content: "\e0b3";
-}
-
-.fa-dice-d20::before {
- content: "\f6cf";
-}
-
-.fa-drone::before {
- content: "\f85f";
-}
-
-.fa-truck-droplet::before {
- content: "\e58c";
-}
-
-.fa-file-circle-xmark::before {
- content: "\e5a1";
-}
-
-.fa-temperature-arrow-up::before {
- content: "\e040";
-}
-
-.fa-temperature-up::before {
- content: "\e040";
-}
-
-.fa-medal::before {
- content: "\f5a2";
-}
-
-.fa-bed::before {
- content: "\f236";
-}
-
-.fa-book-copy::before {
- content: "\e0be";
-}
-
-.fa-square-h::before {
- content: "\f0fd";
-}
-
-.fa-h-square::before {
- content: "\f0fd";
-}
-
-.fa-square-c::before {
- content: "\e266";
-}
-
-.fa-clock-two::before {
- content: "\e35a";
-}
-
-.fa-square-ellipsis-vertical::before {
- content: "\e26f";
-}
-
-.fa-podcast::before {
- content: "\f2ce";
-}
-
-.fa-bee::before {
- content: "\e0b2";
-}
-
-.fa-temperature-full::before {
- content: "\f2c7";
-}
-
-.fa-temperature-4::before {
- content: "\f2c7";
-}
-
-.fa-thermometer-4::before {
- content: "\f2c7";
-}
-
-.fa-thermometer-full::before {
- content: "\f2c7";
-}
-
-.fa-bell::before {
- content: "\f0f3";
-}
-
-.fa-candy-bar::before {
- content: "\e3e8";
-}
-
-.fa-chocolate-bar::before {
- content: "\e3e8";
-}
-
-.fa-xmark-large::before {
- content: "\e59b";
-}
-
-.fa-pinata::before {
- content: "\e3c3";
-}
-
-.fa-arrows-from-line::before {
- content: "\e0a4";
-}
-
-.fa-superscript::before {
- content: "\f12b";
-}
-
-.fa-bowl-spoon::before {
- content: "\e3e0";
-}
-
-.fa-hexagon-check::before {
- content: "\e416";
-}
-
-.fa-plug-circle-xmark::before {
- content: "\e560";
-}
-
-.fa-star-of-life::before {
- content: "\f621";
-}
-
-.fa-phone-slash::before {
- content: "\f3dd";
-}
-
-.fa-traffic-light-stop::before {
- content: "\f63a";
-}
-
-.fa-paint-roller::before {
- content: "\f5aa";
-}
-
-.fa-accent-grave::before {
- content: "\60";
-}
-
-.fa-handshake-angle::before {
- content: "\f4c4";
-}
-
-.fa-hands-helping::before {
- content: "\f4c4";
-}
-
-.fa-circle-0::before {
- content: "\e0ed";
-}
-
-.fa-dial-med-low::before {
- content: "\e160";
-}
-
-.fa-location-dot::before {
- content: "\f3c5";
-}
-
-.fa-map-marker-alt::before {
- content: "\f3c5";
-}
-
-.fa-crab::before {
- content: "\e3ff";
-}
-
-.fa-box-open-full::before {
- content: "\f49c";
-}
-
-.fa-box-full::before {
- content: "\f49c";
-}
-
-.fa-file::before {
- content: "\f15b";
-}
-
-.fa-greater-than::before {
- content: "\3e";
-}
-
-.fa-quotes::before {
- content: "\e234";
-}
-
-.fa-pretzel::before {
- content: "\e441";
-}
-
-.fa-person-swimming::before {
- content: "\f5c4";
-}
-
-.fa-swimmer::before {
- content: "\f5c4";
-}
-
-.fa-arrow-down::before {
- content: "\f063";
-}
-
-.fa-user-robot-xmarks::before {
- content: "\e4a7";
-}
-
-.fa-message-quote::before {
- content: "\e1e4";
-}
-
-.fa-comment-alt-quote::before {
- content: "\e1e4";
-}
-
-.fa-candy-corn::before {
- content: "\f6bd";
-}
-
-.fa-folder-magnifying-glass::before {
- content: "\e18b";
-}
-
-.fa-folder-search::before {
- content: "\e18b";
-}
-
-.fa-notebook::before {
- content: "\e201";
-}
-
-.fa-droplet::before {
- content: "\f043";
-}
-
-.fa-tint::before {
- content: "\f043";
-}
-
-.fa-bullseye-pointer::before {
- content: "\f649";
-}
-
-.fa-eraser::before {
- content: "\f12d";
-}
-
-.fa-hexagon-image::before {
- content: "\e504";
-}
-
-.fa-earth-americas::before {
- content: "\f57d";
-}
-
-.fa-earth::before {
- content: "\f57d";
-}
-
-.fa-earth-america::before {
- content: "\f57d";
-}
-
-.fa-globe-americas::before {
- content: "\f57d";
-}
-
-.fa-crate-apple::before {
- content: "\f6b1";
-}
-
-.fa-apple-crate::before {
- content: "\f6b1";
-}
-
-.fa-person-burst::before {
- content: "\e53b";
-}
-
-.fa-game-board::before {
- content: "\f867";
-}
-
-.fa-hat-chef::before {
- content: "\f86b";
-}
-
-.fa-hand-back-point-right::before {
- content: "\e1a1";
-}
-
-.fa-dove::before {
- content: "\f4ba";
-}
-
-.fa-snowflake-droplets::before {
- content: "\e5c1";
-}
-
-.fa-battery-empty::before {
- content: "\f244";
-}
-
-.fa-battery-0::before {
- content: "\f244";
-}
-
-.fa-grid-4::before {
- content: "\e198";
-}
-
-.fa-socks::before {
- content: "\f696";
-}
-
-.fa-face-sunglasses::before {
- content: "\e398";
-}
-
-.fa-inbox::before {
- content: "\f01c";
-}
-
-.fa-square-0::before {
- content: "\e255";
-}
-
-.fa-section::before {
- content: "\e447";
-}
-
-.fa-square-this-way-up::before {
- content: "\f49f";
-}
-
-.fa-box-up::before {
- content: "\f49f";
-}
-
-.fa-gauge-high::before {
- content: "\f625";
-}
-
-.fa-tachometer-alt::before {
- content: "\f625";
-}
-
-.fa-tachometer-alt-fast::before {
- content: "\f625";
-}
-
-.fa-square-ampersand::before {
- content: "\e260";
-}
-
-.fa-envelope-open-text::before {
- content: "\f658";
-}
-
-.fa-lamp-desk::before {
- content: "\e014";
-}
-
-.fa-hospital::before {
- content: "\f0f8";
-}
-
-.fa-hospital-alt::before {
- content: "\f0f8";
-}
-
-.fa-hospital-wide::before {
- content: "\f0f8";
-}
-
-.fa-poll-people::before {
- content: "\f759";
-}
-
-.fa-whiskey-glass-ice::before {
- content: "\f7a1";
-}
-
-.fa-glass-whiskey-rocks::before {
- content: "\f7a1";
-}
-
-.fa-wine-bottle::before {
- content: "\f72f";
-}
-
-.fa-chess-rook::before {
- content: "\f447";
-}
-
-.fa-user-bounty-hunter::before {
- content: "\e2bf";
-}
-
-.fa-bars-staggered::before {
- content: "\f550";
-}
-
-.fa-reorder::before {
- content: "\f550";
-}
-
-.fa-stream::before {
- content: "\f550";
-}
-
-.fa-diagram-sankey::before {
- content: "\e158";
-}
-
-.fa-cloud-hail-mixed::before {
- content: "\f73a";
-}
-
-.fa-circle-up-left::before {
- content: "\e128";
-}
-
-.fa-dharmachakra::before {
- content: "\f655";
-}
-
-.fa-objects-align-left::before {
- content: "\e3be";
-}
-
-.fa-oil-can-drip::before {
- content: "\e205";
-}
-
-.fa-face-smiling-hands::before {
- content: "\e396";
-}
-
-.fa-broccoli::before {
- content: "\e3e2";
-}
-
-.fa-route-interstate::before {
- content: "\f61b";
-}
-
-.fa-ear-muffs::before {
- content: "\f795";
-}
-
-.fa-hotdog::before {
- content: "\f80f";
-}
-
-.fa-transporter-empty::before {
- content: "\e046";
-}
-
-.fa-person-walking-with-cane::before {
- content: "\f29d";
-}
-
-.fa-blind::before {
- content: "\f29d";
-}
-
-.fa-angle-90::before {
- content: "\e08d";
-}
-
-.fa-rectangle-terminal::before {
- content: "\e236";
-}
-
-.fa-kite::before {
- content: "\f6f4";
-}
-
-.fa-drum::before {
- content: "\f569";
-}
-
-.fa-scrubber::before {
- content: "\f2f8";
-}
-
-.fa-ice-cream::before {
- content: "\f810";
-}
-
-.fa-heart-circle-bolt::before {
- content: "\e4fc";
-}
-
-.fa-fish-bones::before {
- content: "\e304";
-}
-
-.fa-deer-rudolph::before {
- content: "\f78f";
-}
-
-.fa-fax::before {
- content: "\f1ac";
-}
-
-.fa-paragraph::before {
- content: "\f1dd";
-}
-
-.fa-head-side-heart::before {
- content: "\e1aa";
-}
-
-.fa-square-e::before {
- content: "\e26d";
-}
-
-.fa-meter-fire::before {
- content: "\e1eb";
-}
-
-.fa-cloud-hail::before {
- content: "\f739";
-}
-
-.fa-check-to-slot::before {
- content: "\f772";
-}
-
-.fa-vote-yea::before {
- content: "\f772";
-}
-
-.fa-money-from-bracket::before {
- content: "\e312";
-}
-
-.fa-star-half::before {
- content: "\f089";
-}
-
-.fa-car-bus::before {
- content: "\f85a";
-}
-
-.fa-speaker::before {
- content: "\f8df";
-}
-
-.fa-timer::before {
- content: "\e29e";
-}
-
-.fa-boxes-stacked::before {
- content: "\f468";
-}
-
-.fa-boxes::before {
- content: "\f468";
-}
-
-.fa-boxes-alt::before {
- content: "\f468";
-}
-
-.fa-grill-hot::before {
- content: "\e5a5";
-}
-
-.fa-ballot-check::before {
- content: "\f733";
-}
-
-.fa-link::before {
- content: "\f0c1";
-}
-
-.fa-chain::before {
- content: "\f0c1";
-}
-
-.fa-ear-listen::before {
- content: "\f2a2";
-}
-
-.fa-assistive-listening-systems::before {
- content: "\f2a2";
-}
-
-.fa-file-minus::before {
- content: "\f318";
-}
-
-.fa-tree-city::before {
- content: "\e587";
-}
-
-.fa-play::before {
- content: "\f04b";
-}
-
-.fa-font::before {
- content: "\f031";
-}
-
-.fa-cup-togo::before {
- content: "\f6c5";
-}
-
-.fa-coffee-togo::before {
- content: "\f6c5";
-}
-
-.fa-square-down-left::before {
- content: "\e26b";
-}
-
-.fa-burger-lettuce::before {
- content: "\e3e3";
-}
-
-.fa-rupiah-sign::before {
- content: "\e23d";
-}
-
-.fa-magnifying-glass::before {
- content: "\f002";
-}
-
-.fa-search::before {
- content: "\f002";
-}
-
-.fa-table-tennis-paddle-ball::before {
- content: "\f45d";
-}
-
-.fa-ping-pong-paddle-ball::before {
- content: "\f45d";
-}
-
-.fa-table-tennis::before {
- content: "\f45d";
-}
-
-.fa-person-dots-from-line::before {
- content: "\f470";
-}
-
-.fa-diagnoses::before {
- content: "\f470";
-}
-
-.fa-chevrons-down::before {
- content: "\f322";
-}
-
-.fa-chevron-double-down::before {
- content: "\f322";
-}
-
-.fa-trash-can-arrow-up::before {
- content: "\f82a";
-}
-
-.fa-trash-restore-alt::before {
- content: "\f82a";
-}
-
-.fa-signal-good::before {
- content: "\f68e";
-}
-
-.fa-signal-3::before {
- content: "\f68e";
-}
-
-.fa-location-question::before {
- content: "\f60b";
-}
-
-.fa-map-marker-question::before {
- content: "\f60b";
-}
-
-.fa-floppy-disk-circle-xmark::before {
- content: "\e181";
-}
-
-.fa-floppy-disk-times::before {
- content: "\e181";
-}
-
-.fa-save-circle-xmark::before {
- content: "\e181";
-}
-
-.fa-save-times::before {
- content: "\e181";
-}
-
-.fa-naira-sign::before {
- content: "\e1f6";
-}
-
-.fa-peach::before {
- content: "\e20b";
-}
-
-.fa-taxi-bus::before {
- content: "\e298";
-}
-
-.fa-bracket-curly::before {
- content: "\7b";
-}
-
-.fa-bracket-curly-left::before {
- content: "\7b";
-}
-
-.fa-lobster::before {
- content: "\e421";
-}
-
-.fa-cart-flatbed-empty::before {
- content: "\f476";
-}
-
-.fa-dolly-flatbed-empty::before {
- content: "\f476";
-}
-
-.fa-colon::before {
- content: "\3a";
-}
-
-.fa-cart-arrow-down::before {
- content: "\f218";
-}
-
-.fa-wand::before {
- content: "\f72a";
-}
-
-.fa-walkie-talkie::before {
- content: "\f8ef";
-}
-
-.fa-file-pen::before {
- content: "\f31c";
-}
-
-.fa-file-edit::before {
- content: "\f31c";
-}
-
-.fa-receipt::before {
- content: "\f543";
-}
-
-.fa-table-picnic::before {
- content: "\e32d";
-}
-
-.fa-square-pen::before {
- content: "\f14b";
-}
-
-.fa-pen-square::before {
- content: "\f14b";
-}
-
-.fa-pencil-square::before {
- content: "\f14b";
-}
-
-.fa-circle-microphone-lines::before {
- content: "\e117";
-}
-
-.fa-microphone-circle-alt::before {
- content: "\e117";
-}
-
-.fa-display-slash::before {
- content: "\e2fa";
-}
-
-.fa-desktop-slash::before {
- content: "\e2fa";
-}
-
-.fa-suitcase-rolling::before {
- content: "\f5c1";
-}
-
-.fa-person-circle-exclamation::before {
- content: "\e53f";
-}
-
-.fa-transporter-2::before {
- content: "\e044";
-}
-
-.fa-hands-holding-diamond::before {
- content: "\f47c";
-}
-
-.fa-hand-receiving::before {
- content: "\f47c";
-}
-
-.fa-money-bill-simple-wave::before {
- content: "\e1f2";
-}
-
-.fa-chevron-down::before {
- content: "\f078";
-}
-
-.fa-battery-full::before {
- content: "\f240";
-}
-
-.fa-battery::before {
- content: "\f240";
-}
-
-.fa-battery-5::before {
- content: "\f240";
-}
-
-.fa-bell-plus::before {
- content: "\f849";
-}
-
-.fa-book-arrow-right::before {
- content: "\e0b9";
-}
-
-.fa-hospitals::before {
- content: "\f80e";
-}
-
-.fa-club::before {
- content: "\f327";
-}
-
-.fa-skull-crossbones::before {
- content: "\f714";
-}
-
-.fa-droplet-degree::before {
- content: "\f748";
-}
-
-.fa-dewpoint::before {
- content: "\f748";
-}
-
-.fa-code-compare::before {
- content: "\e13a";
-}
-
-.fa-list-ul::before {
- content: "\f0ca";
-}
-
-.fa-list-dots::before {
- content: "\f0ca";
-}
-
-.fa-hand-holding-magic::before {
- content: "\f6e5";
-}
-
-.fa-watermelon-slice::before {
- content: "\e337";
-}
-
-.fa-circle-ellipsis::before {
- content: "\e10a";
-}
-
-.fa-school-lock::before {
- content: "\e56f";
-}
-
-.fa-tower-cell::before {
- content: "\e585";
-}
-
-.fa-sd-cards::before {
- content: "\e240";
-}
-
-.fa-down-long::before {
- content: "\f309";
-}
-
-.fa-long-arrow-alt-down::before {
- content: "\f309";
-}
-
-.fa-envelopes::before {
- content: "\e170";
-}
-
-.fa-phone-office::before {
- content: "\f67d";
-}
-
-.fa-ranking-star::before {
- content: "\e561";
-}
-
-.fa-chess-king::before {
- content: "\f43f";
-}
-
-.fa-nfc-pen::before {
- content: "\e1fa";
-}
-
-.fa-person-harassing::before {
- content: "\e549";
-}
-
-.fa-hat-winter::before {
- content: "\f7a8";
-}
-
-.fa-brazilian-real-sign::before {
- content: "\e46c";
-}
-
-.fa-landmark-dome::before {
- content: "\f752";
-}
-
-.fa-landmark-alt::before {
- content: "\f752";
-}
-
-.fa-bone-break::before {
- content: "\f5d8";
-}
-
-.fa-arrow-up::before {
- content: "\f062";
-}
-
-.fa-down-from-dotted-line::before {
- content: "\e407";
-}
-
-.fa-tv::before {
- content: "\f26c";
-}
-
-.fa-television::before {
- content: "\f26c";
-}
-
-.fa-tv-alt::before {
- content: "\f26c";
-}
-
-.fa-border-left::before {
- content: "\f84f";
-}
-
-.fa-circle-divide::before {
- content: "\e106";
-}
-
-.fa-shrimp::before {
- content: "\e448";
-}
-
-.fa-list-check::before {
- content: "\f0ae";
-}
-
-.fa-tasks::before {
- content: "\f0ae";
-}
-
-.fa-diagram-subtask::before {
- content: "\e479";
-}
-
-.fa-jug-detergent::before {
- content: "\e519";
-}
-
-.fa-circle-user::before {
- content: "\f2bd";
-}
-
-.fa-user-circle::before {
- content: "\f2bd";
-}
-
-.fa-square-y::before {
- content: "\e287";
-}
-
-.fa-user-doctor-hair::before {
- content: "\e458";
-}
-
-.fa-planet-ringed::before {
- content: "\e020";
-}
-
-.fa-mushroom::before {
- content: "\e425";
-}
-
-.fa-user-shield::before {
- content: "\f505";
-}
-
-.fa-megaphone::before {
- content: "\f675";
-}
-
-.fa-circle-exclamation-check::before {
- content: "\e10d";
-}
-
-.fa-wind::before {
- content: "\f72e";
-}
-
-.fa-box-dollar::before {
- content: "\f4a0";
-}
-
-.fa-box-usd::before {
- content: "\f4a0";
-}
-
-.fa-car-burst::before {
- content: "\f5e1";
-}
-
-.fa-car-crash::before {
- content: "\f5e1";
-}
-
-.fa-y::before {
- content: "\59";
-}
-
-.fa-user-headset::before {
- content: "\f82d";
-}
-
-.fa-arrows-retweet::before {
- content: "\f361";
-}
-
-.fa-retweet-alt::before {
- content: "\f361";
-}
-
-.fa-person-snowboarding::before {
- content: "\f7ce";
-}
-
-.fa-snowboarding::before {
- content: "\f7ce";
-}
-
-.fa-square-chevron-right::before {
- content: "\f32b";
-}
-
-.fa-chevron-square-right::before {
- content: "\f32b";
-}
-
-.fa-lacrosse-stick-ball::before {
- content: "\e3b6";
-}
-
-.fa-truck-fast::before {
- content: "\f48b";
-}
-
-.fa-shipping-fast::before {
- content: "\f48b";
-}
-
-.fa-user-magnifying-glass::before {
- content: "\e5c5";
-}
-
-.fa-star-sharp::before {
- content: "\e28b";
-}
-
-.fa-comment-heart::before {
- content: "\e5c8";
-}
-
-.fa-circle-1::before {
- content: "\e0ee";
-}
-
-.fa-circle-star::before {
- content: "\e123";
-}
-
-.fa-star-circle::before {
- content: "\e123";
-}
-
-.fa-fish::before {
- content: "\f578";
-}
-
-.fa-cloud-fog::before {
- content: "\f74e";
-}
-
-.fa-fog::before {
- content: "\f74e";
-}
-
-.fa-waffle::before {
- content: "\e466";
-}
-
-.fa-music-note::before {
- content: "\f8cf";
-}
-
-.fa-music-alt::before {
- content: "\f8cf";
-}
-
-.fa-hexagon-exclamation::before {
- content: "\e417";
-}
-
-.fa-cart-shopping-fast::before {
- content: "\e0dc";
-}
-
-.fa-object-union::before {
- content: "\e49f";
-}
-
-.fa-user-graduate::before {
- content: "\f501";
-}
-
-.fa-starfighter::before {
- content: "\e037";
-}
-
-.fa-circle-half-stroke::before {
- content: "\f042";
-}
-
-.fa-adjust::before {
- content: "\f042";
-}
-
-.fa-arrow-right-long-to-line::before {
- content: "\e3d5";
-}
-
-.fa-square-arrow-down::before {
- content: "\f339";
-}
-
-.fa-arrow-square-down::before {
- content: "\f339";
-}
-
-.fa-diamond-half-stroke::before {
- content: "\e5b8";
-}
-
-.fa-clapperboard::before {
- content: "\e131";
-}
-
-.fa-square-chevron-left::before {
- content: "\f32a";
-}
-
-.fa-chevron-square-left::before {
- content: "\f32a";
-}
-
-.fa-phone-intercom::before {
- content: "\e434";
-}
-
-.fa-link-horizontal::before {
- content: "\e1cb";
-}
-
-.fa-chain-horizontal::before {
- content: "\e1cb";
-}
-
-.fa-mango::before {
- content: "\e30f";
-}
-
-.fa-music-note-slash::before {
- content: "\f8d0";
-}
-
-.fa-music-alt-slash::before {
- content: "\f8d0";
-}
-
-.fa-circle-radiation::before {
- content: "\f7ba";
-}
-
-.fa-radiation-alt::before {
- content: "\f7ba";
-}
-
-.fa-face-tongue-sweat::before {
- content: "\e39e";
-}
-
-.fa-globe-stand::before {
- content: "\f5f6";
-}
-
-.fa-baseball::before {
- content: "\f433";
-}
-
-.fa-baseball-ball::before {
- content: "\f433";
-}
-
-.fa-circle-p::before {
- content: "\e11a";
-}
-
-.fa-award-simple::before {
- content: "\e0ab";
-}
-
-.fa-jet-fighter-up::before {
- content: "\e518";
-}
-
-.fa-diagram-project::before {
- content: "\f542";
-}
-
-.fa-project-diagram::before {
- content: "\f542";
-}
-
-.fa-pedestal::before {
- content: "\e20d";
-}
-
-.fa-chart-pyramid::before {
- content: "\e0e6";
-}
-
-.fa-sidebar::before {
- content: "\e24e";
-}
-
-.fa-snowman-head::before {
- content: "\f79b";
-}
-
-.fa-frosty-head::before {
- content: "\f79b";
-}
-
-.fa-copy::before {
- content: "\f0c5";
-}
-
-.fa-burger-glass::before {
- content: "\e0ce";
-}
-
-.fa-volume-xmark::before {
- content: "\f6a9";
-}
-
-.fa-volume-mute::before {
- content: "\f6a9";
-}
-
-.fa-volume-times::before {
- content: "\f6a9";
-}
-
-.fa-hand-sparkles::before {
- content: "\e05d";
-}
-
-.fa-bars-filter::before {
- content: "\e0ad";
-}
-
-.fa-paintbrush-pencil::before {
- content: "\e206";
-}
-
-.fa-party-bell::before {
- content: "\e31a";
-}
-
-.fa-user-vneck-hair::before {
- content: "\e462";
-}
-
-.fa-jack-o-lantern::before {
- content: "\f30e";
-}
-
-.fa-grip::before {
- content: "\f58d";
-}
-
-.fa-grip-horizontal::before {
- content: "\f58d";
-}
-
-.fa-share-from-square::before {
- content: "\f14d";
-}
-
-.fa-share-square::before {
- content: "\f14d";
-}
-
-.fa-keynote::before {
- content: "\f66c";
-}
-
-.fa-child-combatant::before {
- content: "\e4e0";
-}
-
-.fa-child-rifle::before {
- content: "\e4e0";
-}
-
-.fa-gun::before {
- content: "\e19b";
-}
-
-.fa-square-phone::before {
- content: "\f098";
-}
-
-.fa-phone-square::before {
- content: "\f098";
-}
-
-.fa-plus::before {
- content: "\2b";
-}
-
-.fa-add::before {
- content: "\2b";
-}
-
-.fa-expand::before {
- content: "\f065";
-}
-
-.fa-computer::before {
- content: "\e4e5";
-}
-
-.fa-fort::before {
- content: "\e486";
-}
-
-.fa-cloud-check::before {
- content: "\e35c";
-}
-
-.fa-xmark::before {
- content: "\f00d";
-}
-
-.fa-close::before {
- content: "\f00d";
-}
-
-.fa-multiply::before {
- content: "\f00d";
-}
-
-.fa-remove::before {
- content: "\f00d";
-}
-
-.fa-times::before {
- content: "\f00d";
-}
-
-.fa-face-smirking::before {
- content: "\e397";
-}
-
-.fa-arrows-up-down-left-right::before {
- content: "\f047";
-}
-
-.fa-arrows::before {
- content: "\f047";
-}
-
-.fa-chalkboard-user::before {
- content: "\f51c";
-}
-
-.fa-chalkboard-teacher::before {
- content: "\f51c";
-}
-
-.fa-rhombus::before {
- content: "\e23b";
-}
-
-.fa-claw-marks::before {
- content: "\f6c2";
-}
-
-.fa-peso-sign::before {
- content: "\e222";
-}
-
-.fa-face-smile-tongue::before {
- content: "\e394";
-}
-
-.fa-cart-circle-xmark::before {
- content: "\e3f4";
-}
-
-.fa-building-shield::before {
- content: "\e4d8";
-}
-
-.fa-circle-phone-flip::before {
- content: "\e11c";
-}
-
-.fa-phone-circle-alt::before {
- content: "\e11c";
-}
-
-.fa-baby::before {
- content: "\f77c";
-}
-
-.fa-users-line::before {
- content: "\e592";
-}
-
-.fa-quote-left::before {
- content: "\f10d";
-}
-
-.fa-quote-left-alt::before {
- content: "\f10d";
-}
-
-.fa-tractor::before {
- content: "\f722";
-}
-
-.fa-key-skeleton::before {
- content: "\f6f3";
-}
-
-.fa-trash-arrow-up::before {
- content: "\f829";
-}
-
-.fa-trash-restore::before {
- content: "\f829";
-}
-
-.fa-arrow-down-up-lock::before {
- content: "\e4b0";
-}
-
-.fa-arrow-down-to-bracket::before {
- content: "\e094";
-}
-
-.fa-lines-leaning::before {
- content: "\e51e";
-}
-
-.fa-square-q::before {
- content: "\e27b";
-}
-
-.fa-ruler-combined::before {
- content: "\f546";
-}
-
-.fa-symbols::before {
- content: "\f86e";
-}
-
-.fa-icons-alt::before {
- content: "\f86e";
-}
-
-.fa-copyright::before {
- content: "\f1f9";
-}
-
-.fa-highlighter-line::before {
- content: "\e1af";
-}
-
-.fa-bracket-square::before {
- content: "\5b";
-}
-
-.fa-bracket::before {
- content: "\5b";
-}
-
-.fa-bracket-left::before {
- content: "\5b";
-}
-
-.fa-island-tropical::before {
- content: "\f811";
-}
-
-.fa-island-tree-palm::before {
- content: "\f811";
-}
-
-.fa-arrow-right-from-line::before {
- content: "\f343";
-}
-
-.fa-arrow-from-left::before {
- content: "\f343";
-}
-
-.fa-h2::before {
- content: "\f314";
-}
-
-.fa-equals::before {
- content: "\3d";
-}
-
-.fa-cake-slice::before {
- content: "\e3e5";
-}
-
-.fa-shortcake::before {
- content: "\e3e5";
-}
-
-.fa-peanut::before {
- content: "\e430";
-}
-
-.fa-wrench-simple::before {
- content: "\e2d1";
-}
-
-.fa-blender::before {
- content: "\f517";
-}
-
-.fa-teeth::before {
- content: "\f62e";
-}
-
-.fa-tally-2::before {
- content: "\e295";
-}
-
-.fa-shekel-sign::before {
- content: "\f20b";
-}
-
-.fa-ils::before {
- content: "\f20b";
-}
-
-.fa-shekel::before {
- content: "\f20b";
-}
-
-.fa-sheqel::before {
- content: "\f20b";
-}
-
-.fa-sheqel-sign::before {
- content: "\f20b";
-}
-
-.fa-cars::before {
- content: "\f85b";
-}
-
-.fa-axe-battle::before {
- content: "\f6b3";
-}
-
-.fa-user-hair-long::before {
- content: "\e45b";
-}
-
-.fa-map::before {
- content: "\f279";
-}
-
-.fa-file-circle-info::before {
- content: "\e493";
-}
-
-.fa-face-disappointed::before {
- content: "\e36f";
-}
-
-.fa-lasso-sparkles::before {
- content: "\e1c9";
-}
-
-.fa-clock-eleven::before {
- content: "\e347";
-}
-
-.fa-rocket::before {
- content: "\f135";
-}
-
-.fa-siren-on::before {
- content: "\e02e";
-}
-
-.fa-clock-ten::before {
- content: "\e354";
-}
-
-.fa-candle-holder::before {
- content: "\f6bc";
-}
-
-.fa-video-arrow-down-left::before {
- content: "\e2c8";
-}
-
-.fa-photo-film::before {
- content: "\f87c";
-}
-
-.fa-photo-video::before {
- content: "\f87c";
-}
-
-.fa-floppy-disk-circle-arrow-right::before {
- content: "\e180";
-}
-
-.fa-save-circle-arrow-right::before {
- content: "\e180";
-}
-
-.fa-folder-minus::before {
- content: "\f65d";
-}
-
-.fa-planet-moon::before {
- content: "\e01f";
-}
-
-.fa-face-eyes-xmarks::before {
- content: "\e374";
-}
-
-.fa-chart-scatter::before {
- content: "\f7ee";
-}
-
-.fa-display-arrow-down::before {
- content: "\e164";
-}
-
-.fa-store::before {
- content: "\f54e";
-}
-
-.fa-arrow-trend-up::before {
- content: "\e098";
-}
-
-.fa-plug-circle-minus::before {
- content: "\e55e";
-}
-
-.fa-olive-branch::before {
- content: "\e317";
-}
-
-.fa-angle::before {
- content: "\e08c";
-}
-
-.fa-vacuum-robot::before {
- content: "\e04e";
-}
-
-.fa-sign-hanging::before {
- content: "\f4d9";
-}
-
-.fa-sign::before {
- content: "\f4d9";
-}
-
-.fa-square-divide::before {
- content: "\e26a";
-}
-
-.fa-signal-stream-slash::before {
- content: "\e250";
-}
-
-.fa-bezier-curve::before {
- content: "\f55b";
-}
-
-.fa-eye-dropper-half::before {
- content: "\e173";
-}
-
-.fa-store-lock::before {
- content: "\e4a6";
-}
-
-.fa-bell-slash::before {
- content: "\f1f6";
-}
-
-.fa-cloud-bolt-sun::before {
- content: "\f76e";
-}
-
-.fa-thunderstorm-sun::before {
- content: "\f76e";
-}
-
-.fa-camera-slash::before {
- content: "\e0d9";
-}
-
-.fa-comment-quote::before {
- content: "\e14c";
-}
-
-.fa-tablet::before {
- content: "\f3fb";
-}
-
-.fa-tablet-android::before {
- content: "\f3fb";
-}
-
-.fa-school-flag::before {
- content: "\e56e";
-}
-
-.fa-message-code::before {
- content: "\e1df";
-}
-
-.fa-glass-half::before {
- content: "\e192";
-}
-
-.fa-glass-half-empty::before {
- content: "\e192";
-}
-
-.fa-glass-half-full::before {
- content: "\e192";
-}
-
-.fa-fill::before {
- content: "\f575";
-}
-
-.fa-message-minus::before {
- content: "\f4a7";
-}
-
-.fa-comment-alt-minus::before {
- content: "\f4a7";
-}
-
-.fa-angle-up::before {
- content: "\f106";
-}
-
-.fa-drumstick-bite::before {
- content: "\f6d7";
-}
-
-.fa-link-horizontal-slash::before {
- content: "\e1cc";
-}
-
-.fa-chain-horizontal-slash::before {
- content: "\e1cc";
-}
-
-.fa-holly-berry::before {
- content: "\f7aa";
-}
-
-.fa-nose::before {
- content: "\e5bd";
-}
-
-.fa-chevron-left::before {
- content: "\f053";
-}
-
-.fa-bacteria::before {
- content: "\e059";
-}
-
-.fa-clouds::before {
- content: "\f744";
-}
-
-.fa-money-bill-simple::before {
- content: "\e1f1";
-}
-
-.fa-hand-lizard::before {
- content: "\f258";
-}
-
-.fa-table-pivot::before {
- content: "\e291";
-}
-
-.fa-filter-slash::before {
- content: "\e17d";
-}
-
-.fa-trash-can-undo::before {
- content: "\f896";
-}
-
-.fa-trash-can-arrow-turn-left::before {
- content: "\f896";
-}
-
-.fa-trash-undo-alt::before {
- content: "\f896";
-}
-
-.fa-notdef::before {
- content: "\e1fe";
-}
-
-.fa-disease::before {
- content: "\f7fa";
-}
-
-.fa-person-to-door::before {
- content: "\e433";
-}
-
-.fa-turntable::before {
- content: "\f8e4";
-}
-
-.fa-briefcase-medical::before {
- content: "\f469";
-}
-
-.fa-genderless::before {
- content: "\f22d";
-}
-
-.fa-chevron-right::before {
- content: "\f054";
-}
-
-.fa-signal-weak::before {
- content: "\f68c";
-}
-
-.fa-signal-1::before {
- content: "\f68c";
-}
-
-.fa-clock-five::before {
- content: "\e349";
-}
-
-.fa-retweet::before {
- content: "\f079";
-}
-
-.fa-car-rear::before {
- content: "\f5de";
-}
-
-.fa-car-alt::before {
- content: "\f5de";
-}
-
-.fa-pump-soap::before {
- content: "\e06b";
-}
-
-.fa-computer-classic::before {
- content: "\f8b1";
-}
-
-.fa-frame::before {
- content: "\e495";
-}
-
-.fa-video-slash::before {
- content: "\f4e2";
-}
-
-.fa-battery-quarter::before {
- content: "\f243";
-}
-
-.fa-battery-2::before {
- content: "\f243";
-}
-
-.fa-ellipsis-stroke::before {
- content: "\f39b";
-}
-
-.fa-ellipsis-h-alt::before {
- content: "\f39b";
-}
-
-.fa-radio::before {
- content: "\f8d7";
-}
-
-.fa-baby-carriage::before {
- content: "\f77d";
-}
-
-.fa-carriage-baby::before {
- content: "\f77d";
-}
-
-.fa-face-expressionless::before {
- content: "\e373";
-}
-
-.fa-down-to-dotted-line::before {
- content: "\e408";
-}
-
-.fa-cloud-music::before {
- content: "\f8ae";
-}
-
-.fa-traffic-light::before {
- content: "\f637";
-}
-
-.fa-cloud-minus::before {
- content: "\e35d";
-}
-
-.fa-thermometer::before {
- content: "\f491";
-}
-
-.fa-shield-minus::before {
- content: "\e249";
-}
-
-.fa-vr-cardboard::before {
- content: "\f729";
-}
-
-.fa-car-tilt::before {
- content: "\f5e5";
-}
-
-.fa-gauge-circle-minus::before {
- content: "\e497";
-}
-
-.fa-brightness-low::before {
- content: "\e0ca";
-}
-
-.fa-hand-middle-finger::before {
- content: "\f806";
-}
-
-.fa-percent::before {
- content: "\25";
-}
-
-.fa-percentage::before {
- content: "\25";
-}
-
-.fa-truck-moving::before {
- content: "\f4df";
-}
-
-.fa-glass-water-droplet::before {
- content: "\e4f5";
-}
-
-.fa-conveyor-belt::before {
- content: "\f46e";
-}
-
-.fa-location-check::before {
- content: "\f606";
-}
-
-.fa-map-marker-check::before {
- content: "\f606";
-}
-
-.fa-coin-vertical::before {
- content: "\e3fd";
-}
-
-.fa-display::before {
- content: "\e163";
-}
-
-.fa-person-sign::before {
- content: "\f757";
-}
-
-.fa-face-smile::before {
- content: "\f118";
-}
-
-.fa-smile::before {
- content: "\f118";
-}
-
-.fa-phone-hangup::before {
- content: "\e225";
-}
-
-.fa-signature-slash::before {
- content: "\e3cb";
-}
-
-.fa-thumbtack::before {
- content: "\f08d";
-}
-
-.fa-thumb-tack::before {
- content: "\f08d";
-}
-
-.fa-wheat-slash::before {
- content: "\e339";
-}
-
-.fa-trophy::before {
- content: "\f091";
-}
-
-.fa-clouds-sun::before {
- content: "\f746";
-}
-
-.fa-person-praying::before {
- content: "\f683";
-}
-
-.fa-pray::before {
- content: "\f683";
-}
-
-.fa-hammer::before {
- content: "\f6e3";
-}
-
-.fa-face-vomit::before {
- content: "\e3a0";
-}
-
-.fa-speakers::before {
- content: "\f8e0";
-}
-
-.fa-tty-answer::before {
- content: "\e2b9";
-}
-
-.fa-teletype-answer::before {
- content: "\e2b9";
-}
-
-.fa-mug-tea-saucer::before {
- content: "\e1f5";
-}
-
-.fa-diagram-lean-canvas::before {
- content: "\e156";
-}
-
-.fa-alt::before {
- content: "\e08a";
-}
-
-.fa-dial::before {
- content: "\e15b";
-}
-
-.fa-dial-med-high::before {
- content: "\e15b";
-}
-
-.fa-hand-peace::before {
- content: "\f25b";
-}
-
-.fa-circle-trash::before {
- content: "\e126";
-}
-
-.fa-trash-circle::before {
- content: "\e126";
-}
-
-.fa-rotate::before {
- content: "\f2f1";
-}
-
-.fa-sync-alt::before {
- content: "\f2f1";
-}
-
-.fa-circle-quarters::before {
- content: "\e3f8";
-}
-
-.fa-spinner::before {
- content: "\f110";
-}
-
-.fa-tower-control::before {
- content: "\e2a2";
-}
-
-.fa-arrow-up-triangle-square::before {
- content: "\f88a";
-}
-
-.fa-sort-shapes-up::before {
- content: "\f88a";
-}
-
-.fa-whale::before {
- content: "\f72c";
-}
-
-.fa-robot::before {
- content: "\f544";
-}
-
-.fa-peace::before {
- content: "\f67c";
-}
-
-.fa-party-horn::before {
- content: "\e31b";
-}
-
-.fa-gears::before {
- content: "\f085";
-}
-
-.fa-cogs::before {
- content: "\f085";
-}
-
-.fa-sun-bright::before {
- content: "\e28f";
-}
-
-.fa-sun-alt::before {
- content: "\e28f";
-}
-
-.fa-warehouse::before {
- content: "\f494";
-}
-
-.fa-lock-keyhole-open::before {
- content: "\f3c2";
-}
-
-.fa-lock-open-alt::before {
- content: "\f3c2";
-}
-
-.fa-square-fragile::before {
- content: "\f49b";
-}
-
-.fa-box-fragile::before {
- content: "\f49b";
-}
-
-.fa-square-wine-glass-crack::before {
- content: "\f49b";
-}
-
-.fa-arrow-up-right-dots::before {
- content: "\e4b7";
-}
-
-.fa-square-n::before {
- content: "\e277";
-}
-
-.fa-splotch::before {
- content: "\f5bc";
-}
-
-.fa-face-grin-hearts::before {
- content: "\f584";
-}
-
-.fa-grin-hearts::before {
- content: "\f584";
-}
-
-.fa-meter::before {
- content: "\e1e8";
-}
-
-.fa-mandolin::before {
- content: "\f6f9";
-}
-
-.fa-dice-four::before {
- content: "\f524";
-}
-
-.fa-sim-card::before {
- content: "\f7c4";
-}
-
-.fa-transgender::before {
- content: "\f225";
-}
-
-.fa-transgender-alt::before {
- content: "\f225";
-}
-
-.fa-mercury::before {
- content: "\f223";
-}
-
-.fa-up-from-bracket::before {
- content: "\e590";
-}
-
-.fa-knife-kitchen::before {
- content: "\f6f5";
-}
-
-.fa-border-right::before {
- content: "\f852";
-}
-
-.fa-arrow-turn-down::before {
- content: "\f149";
-}
-
-.fa-level-down::before {
- content: "\f149";
-}
-
-.fa-spade::before {
- content: "\f2f4";
-}
-
-.fa-card-spade::before {
- content: "\e3ec";
-}
-
-.fa-line-columns::before {
- content: "\f870";
-}
-
-.fa-arrow-right-to-line::before {
- content: "\f340";
-}
-
-.fa-arrow-to-right::before {
- content: "\f340";
-}
-
-.fa-person-falling-burst::before {
- content: "\e547";
-}
-
-.fa-flag-pennant::before {
- content: "\f456";
-}
-
-.fa-pennant::before {
- content: "\f456";
-}
-
-.fa-conveyor-belt-empty::before {
- content: "\e150";
-}
-
-.fa-award::before {
- content: "\f559";
-}
-
-.fa-ticket-simple::before {
- content: "\f3ff";
-}
-
-.fa-ticket-alt::before {
- content: "\f3ff";
-}
-
-.fa-building::before {
- content: "\f1ad";
-}
-
-.fa-angles-left::before {
- content: "\f100";
-}
-
-.fa-angle-double-left::before {
- content: "\f100";
-}
-
-.fa-camcorder::before {
- content: "\f8a8";
-}
-
-.fa-video-handheld::before {
- content: "\f8a8";
-}
-
-.fa-pancakes::before {
- content: "\e42d";
-}
-
-.fa-album-circle-user::before {
- content: "\e48d";
-}
-
-.fa-qrcode::before {
- content: "\f029";
-}
-
-.fa-dice-d10::before {
- content: "\f6cd";
-}
-
-.fa-fireplace::before {
- content: "\f79a";
-}
-
-.fa-browser::before {
- content: "\f37e";
-}
-
-.fa-pen-paintbrush::before {
- content: "\f618";
-}
-
-.fa-pencil-paintbrush::before {
- content: "\f618";
-}
-
-.fa-fish-cooked::before {
- content: "\f7fe";
-}
-
-.fa-chair-office::before {
- content: "\f6c1";
-}
-
-.fa-nesting-dolls::before {
- content: "\e3ba";
-}
-
-.fa-clock-rotate-left::before {
- content: "\f1da";
-}
-
-.fa-history::before {
- content: "\f1da";
-}
-
-.fa-trumpet::before {
- content: "\f8e3";
-}
-
-.fa-face-grin-beam-sweat::before {
- content: "\f583";
-}
-
-.fa-grin-beam-sweat::before {
- content: "\f583";
-}
-
-.fa-fire-smoke::before {
- content: "\f74b";
-}
-
-.fa-phone-missed::before {
- content: "\e226";
-}
-
-.fa-file-export::before {
- content: "\f56e";
-}
-
-.fa-arrow-right-from-file::before {
- content: "\f56e";
-}
-
-.fa-shield::before {
- content: "\f132";
-}
-
-.fa-shield-blank::before {
- content: "\f132";
-}
-
-.fa-arrow-up-short-wide::before {
- content: "\f885";
-}
-
-.fa-sort-amount-up-alt::before {
- content: "\f885";
-}
-
-.fa-arrows-repeat-1::before {
- content: "\f366";
-}
-
-.fa-repeat-1-alt::before {
- content: "\f366";
-}
-
-.fa-gun-slash::before {
- content: "\e19c";
-}
-
-.fa-avocado::before {
- content: "\e0aa";
-}
-
-.fa-binary::before {
- content: "\e33b";
-}
-
-.fa-glasses-round::before {
- content: "\f5f5";
-}
-
-.fa-glasses-alt::before {
- content: "\f5f5";
-}
-
-.fa-phone-plus::before {
- content: "\f4d2";
-}
-
-.fa-ditto::before {
- content: "\22";
-}
-
-.fa-person-seat::before {
- content: "\e21e";
-}
-
-.fa-house-medical::before {
- content: "\e3b2";
-}
-
-.fa-golf-ball-tee::before {
- content: "\f450";
-}
-
-.fa-golf-ball::before {
- content: "\f450";
-}
-
-.fa-circle-chevron-left::before {
- content: "\f137";
-}
-
-.fa-chevron-circle-left::before {
- content: "\f137";
-}
-
-.fa-house-chimney-window::before {
- content: "\e00d";
-}
-
-.fa-scythe::before {
- content: "\f710";
-}
-
-.fa-pen-nib::before {
- content: "\f5ad";
-}
-
-.fa-ban-parking::before {
- content: "\f616";
-}
-
-.fa-parking-circle-slash::before {
- content: "\f616";
-}
-
-.fa-tent-arrow-turn-left::before {
- content: "\e580";
-}
-
-.fa-face-diagonal-mouth::before {
- content: "\e47e";
-}
-
-.fa-diagram-cells::before {
- content: "\e475";
-}
-
-.fa-cricket-bat-ball::before {
- content: "\f449";
-}
-
-.fa-cricket::before {
- content: "\f449";
-}
-
-.fa-tents::before {
- content: "\e582";
-}
-
-.fa-wand-magic::before {
- content: "\f0d0";
-}
-
-.fa-magic::before {
- content: "\f0d0";
-}
-
-.fa-dog::before {
- content: "\f6d3";
-}
-
-.fa-pen-line::before {
- content: "\e212";
-}
-
-.fa-atom-simple::before {
- content: "\f5d3";
-}
-
-.fa-atom-alt::before {
- content: "\f5d3";
-}
-
-.fa-ampersand::before {
- content: "\26";
-}
-
-.fa-carrot::before {
- content: "\f787";
-}
-
-.fa-arrow-up-from-line::before {
- content: "\f342";
-}
-
-.fa-arrow-from-bottom::before {
- content: "\f342";
-}
-
-.fa-moon::before {
- content: "\f186";
-}
-
-.fa-pen-slash::before {
- content: "\e213";
-}
-
-.fa-wine-glass-empty::before {
- content: "\f5ce";
-}
-
-.fa-wine-glass-alt::before {
- content: "\f5ce";
-}
-
-.fa-square-star::before {
- content: "\e27f";
-}
-
-.fa-cheese::before {
- content: "\f7ef";
-}
-
-.fa-send-backward::before {
- content: "\f87f";
-}
-
-.fa-yin-yang::before {
- content: "\f6ad";
-}
-
-.fa-music::before {
- content: "\f001";
-}
-
-.fa-compass-slash::before {
- content: "\f5e9";
-}
-
-.fa-clock-one::before {
- content: "\e34e";
-}
-
-.fa-file-music::before {
- content: "\f8b6";
-}
-
-.fa-code-commit::before {
- content: "\f386";
-}
-
-.fa-temperature-low::before {
- content: "\f76b";
-}
-
-.fa-person-biking::before {
- content: "\f84a";
-}
-
-.fa-biking::before {
- content: "\f84a";
-}
-
-.fa-skeleton::before {
- content: "\f620";
-}
-
-.fa-circle-g::before {
- content: "\e10f";
-}
-
-.fa-circle-arrow-up-left::before {
- content: "\e0fb";
-}
-
-.fa-coin-blank::before {
- content: "\e3fb";
-}
-
-.fa-broom::before {
- content: "\f51a";
-}
-
-.fa-vacuum::before {
- content: "\e04d";
-}
-
-.fa-shield-heart::before {
- content: "\e574";
-}
-
-.fa-card-heart::before {
- content: "\e3eb";
-}
-
-.fa-lightbulb-cfl-on::before {
- content: "\e5a7";
-}
-
-.fa-melon::before {
- content: "\e310";
-}
-
-.fa-gopuram::before {
- content: "\f664";
-}
-
-.fa-earth-oceania::before {
- content: "\e47b";
-}
-
-.fa-globe-oceania::before {
- content: "\e47b";
-}
-
-.fa-container-storage::before {
- content: "\f4b7";
-}
-
-.fa-face-pouting::before {
- content: "\e387";
-}
-
-.fa-square-xmark::before {
- content: "\f2d3";
-}
-
-.fa-times-square::before {
- content: "\f2d3";
-}
-
-.fa-xmark-square::before {
- content: "\f2d3";
-}
-
-.fa-face-explode::before {
- content: "\e2fe";
-}
-
-.fa-exploding-head::before {
- content: "\e2fe";
-}
-
-.fa-hashtag::before {
- content: "\23";
-}
-
-.fa-up-right-and-down-left-from-center::before {
- content: "\f424";
-}
-
-.fa-expand-alt::before {
- content: "\f424";
-}
-
-.fa-oil-can::before {
- content: "\f613";
-}
-
-.fa-t::before {
- content: "\54";
-}
-
-.fa-transformer-bolt::before {
- content: "\e2a4";
-}
-
-.fa-hippo::before {
- content: "\f6ed";
-}
-
-.fa-chart-column::before {
- content: "\e0e3";
-}
-
-.fa-cassette-vhs::before {
- content: "\f8ec";
-}
-
-.fa-vhs::before {
- content: "\f8ec";
-}
-
-.fa-infinity::before {
- content: "\f534";
-}
-
-.fa-vial-circle-check::before {
- content: "\e596";
-}
-
-.fa-chimney::before {
- content: "\f78b";
-}
-
-.fa-object-intersect::before {
- content: "\e49d";
-}
-
-.fa-person-arrow-down-to-line::before {
- content: "\e538";
-}
-
-.fa-voicemail::before {
- content: "\f897";
-}
-
-.fa-block-brick::before {
- content: "\e3db";
-}
-
-.fa-wall-brick::before {
- content: "\e3db";
-}
-
-.fa-fan::before {
- content: "\f863";
-}
-
-.fa-bags-shopping::before {
- content: "\f847";
-}
-
-.fa-paragraph-left::before {
- content: "\f878";
-}
-
-.fa-paragraph-rtl::before {
- content: "\f878";
-}
-
-.fa-person-walking-luggage::before {
- content: "\e554";
-}
-
-.fa-caravan-simple::before {
- content: "\e000";
-}
-
-.fa-caravan-alt::before {
- content: "\e000";
-}
-
-.fa-turtle::before {
- content: "\f726";
-}
-
-.fa-up-down::before {
- content: "\f338";
-}
-
-.fa-arrows-alt-v::before {
- content: "\f338";
-}
-
-.fa-cloud-moon-rain::before {
- content: "\f73c";
-}
-
-.fa-booth-curtain::before {
- content: "\f734";
-}
-
-.fa-calendar::before {
- content: "\f133";
-}
-
-.fa-box-heart::before {
- content: "\f49d";
-}
-
-.fa-trailer::before {
- content: "\e041";
-}
-
-.fa-user-doctor-message::before {
- content: "\f82e";
-}
-
-.fa-user-md-chat::before {
- content: "\f82e";
-}
-
-.fa-bahai::before {
- content: "\f666";
-}
-
-.fa-haykal::before {
- content: "\f666";
-}
-
-.fa-amp-guitar::before {
- content: "\f8a1";
-}
-
-.fa-sd-card::before {
- content: "\f7c2";
-}
-
-.fa-volume-slash::before {
- content: "\f2e2";
-}
-
-.fa-border-bottom::before {
- content: "\f84d";
-}
-
-.fa-wifi-weak::before {
- content: "\f6aa";
-}
-
-.fa-wifi-1::before {
- content: "\f6aa";
-}
-
-.fa-dragon::before {
- content: "\f6d5";
-}
-
-.fa-shoe-prints::before {
- content: "\f54b";
-}
-
-.fa-circle-plus::before {
- content: "\f055";
-}
-
-.fa-plus-circle::before {
- content: "\f055";
-}
-
-.fa-face-grin-tongue-wink::before {
- content: "\f58b";
-}
-
-.fa-grin-tongue-wink::before {
- content: "\f58b";
-}
-
-.fa-hand-holding::before {
- content: "\f4bd";
-}
-
-.fa-plug-circle-exclamation::before {
- content: "\e55d";
-}
-
-.fa-link-slash::before {
- content: "\f127";
-}
-
-.fa-chain-broken::before {
- content: "\f127";
-}
-
-.fa-chain-slash::before {
- content: "\f127";
-}
-
-.fa-unlink::before {
- content: "\f127";
-}
-
-.fa-clone::before {
- content: "\f24d";
-}
-
-.fa-person-walking-arrow-loop-left::before {
- content: "\e551";
-}
-
-.fa-arrow-up-z-a::before {
- content: "\f882";
-}
-
-.fa-sort-alpha-up-alt::before {
- content: "\f882";
-}
-
-.fa-fire-flame-curved::before {
- content: "\f7e4";
-}
-
-.fa-fire-alt::before {
- content: "\f7e4";
-}
-
-.fa-tornado::before {
- content: "\f76f";
-}
-
-.fa-file-circle-plus::before {
- content: "\e494";
-}
-
-.fa-delete-right::before {
- content: "\e154";
-}
-
-.fa-book-quran::before {
- content: "\f687";
-}
-
-.fa-quran::before {
- content: "\f687";
-}
-
-.fa-circle-quarter::before {
- content: "\e11f";
-}
-
-.fa-anchor::before {
- content: "\f13d";
-}
-
-.fa-border-all::before {
- content: "\f84c";
-}
-
-.fa-function::before {
- content: "\f661";
-}
-
-.fa-face-angry::before {
- content: "\f556";
-}
-
-.fa-angry::before {
- content: "\f556";
-}
-
-.fa-people-simple::before {
- content: "\e21b";
-}
-
-.fa-cookie-bite::before {
- content: "\f564";
-}
-
-.fa-arrow-trend-down::before {
- content: "\e097";
-}
-
-.fa-rss::before {
- content: "\f09e";
-}
-
-.fa-feed::before {
- content: "\f09e";
-}
-
-.fa-face-monocle::before {
- content: "\e380";
-}
-
-.fa-draw-polygon::before {
- content: "\f5ee";
-}
-
-.fa-scale-balanced::before {
- content: "\f24e";
-}
-
-.fa-balance-scale::before {
- content: "\f24e";
-}
-
-.fa-calendar-lines::before {
- content: "\e0d5";
-}
-
-.fa-calendar-note::before {
- content: "\e0d5";
-}
-
-.fa-arrow-down-big-small::before {
- content: "\f88c";
-}
-
-.fa-sort-size-down::before {
- content: "\f88c";
-}
-
-.fa-gauge-simple-high::before {
- content: "\f62a";
-}
-
-.fa-tachometer::before {
- content: "\f62a";
-}
-
-.fa-tachometer-fast::before {
- content: "\f62a";
-}
-
-.fa-do-not-enter::before {
- content: "\f5ec";
-}
-
-.fa-shower::before {
- content: "\f2cc";
-}
-
-.fa-dice-d8::before {
- content: "\f6d2";
-}
-
-.fa-desktop::before {
- content: "\f390";
-}
-
-.fa-desktop-alt::before {
- content: "\f390";
-}
-
-.fa-m::before {
- content: "\4d";
-}
-
-.fa-grip-dots-vertical::before {
- content: "\e411";
-}
-
-.fa-face-viewfinder::before {
- content: "\e2ff";
-}
-
-.fa-soft-serve::before {
- content: "\e400";
-}
-
-.fa-creemee::before {
- content: "\e400";
-}
-
-.fa-h5::before {
- content: "\e412";
-}
-
-.fa-hand-back-point-down::before {
- content: "\e19e";
-}
-
-.fa-table-list::before {
- content: "\f00b";
-}
-
-.fa-th-list::before {
- content: "\f00b";
-}
-
-.fa-comment-sms::before {
- content: "\f7cd";
-}
-
-.fa-sms::before {
- content: "\f7cd";
-}
-
-.fa-rectangle::before {
- content: "\f2fa";
-}
-
-.fa-rectangle-landscape::before {
- content: "\f2fa";
-}
-
-.fa-clipboard-list-check::before {
- content: "\f737";
-}
-
-.fa-turkey::before {
- content: "\f725";
-}
-
-.fa-book::before {
- content: "\f02d";
-}
-
-.fa-user-plus::before {
- content: "\f234";
-}
-
-.fa-ice-skate::before {
- content: "\f7ac";
-}
-
-.fa-check::before {
- content: "\f00c";
-}
-
-.fa-battery-three-quarters::before {
- content: "\f241";
-}
-
-.fa-battery-4::before {
- content: "\f241";
-}
-
-.fa-tomato::before {
- content: "\e330";
-}
-
-.fa-sword-laser::before {
- content: "\e03b";
-}
-
-.fa-house-circle-check::before {
- content: "\e509";
-}
-
-.fa-buildings::before {
- content: "\e0cc";
-}
-
-.fa-angle-left::before {
- content: "\f104";
-}
-
-.fa-cart-flatbed-boxes::before {
- content: "\f475";
-}
-
-.fa-dolly-flatbed-alt::before {
- content: "\f475";
-}
-
-.fa-diagram-successor::before {
- content: "\e47a";
-}
-
-.fa-truck-arrow-right::before {
- content: "\e58b";
-}
-
-.fa-square-w::before {
- content: "\e285";
-}
-
-.fa-arrows-split-up-and-left::before {
- content: "\e4bc";
-}
-
-.fa-lamp::before {
- content: "\f4ca";
-}
-
-.fa-airplay::before {
- content: "\e089";
-}
-
-.fa-hand-fist::before {
- content: "\f6de";
-}
-
-.fa-fist-raised::before {
- content: "\f6de";
-}
-
-.fa-shield-quartered::before {
- content: "\e575";
-}
-
-.fa-slash-forward::before {
- content: "\2f";
-}
-
-.fa-location-pen::before {
- content: "\f607";
-}
-
-.fa-map-marker-edit::before {
- content: "\f607";
-}
-
-.fa-cloud-moon::before {
- content: "\f6c3";
-}
-
-.fa-pot-food::before {
- content: "\e43f";
-}
-
-.fa-briefcase::before {
- content: "\f0b1";
-}
-
-.fa-person-falling::before {
- content: "\e546";
-}
-
-.fa-image-portrait::before {
- content: "\f3e0";
-}
-
-.fa-portrait::before {
- content: "\f3e0";
-}
-
-.fa-user-tag::before {
- content: "\f507";
-}
-
-.fa-rug::before {
- content: "\e569";
-}
-
-.fa-print-slash::before {
- content: "\f686";
-}
-
-.fa-earth-europe::before {
- content: "\f7a2";
-}
-
-.fa-globe-europe::before {
- content: "\f7a2";
-}
-
-.fa-cart-flatbed-suitcase::before {
- content: "\f59d";
-}
-
-.fa-luggage-cart::before {
- content: "\f59d";
-}
-
-.fa-hand-back-point-ribbon::before {
- content: "\e1a0";
-}
-
-.fa-rectangle-xmark::before {
- content: "\f410";
-}
-
-.fa-rectangle-times::before {
- content: "\f410";
-}
-
-.fa-times-rectangle::before {
- content: "\f410";
-}
-
-.fa-window-close::before {
- content: "\f410";
-}
-
-.fa-tire-rugged::before {
- content: "\f634";
-}
-
-.fa-lightbulb-dollar::before {
- content: "\f670";
-}
-
-.fa-cowbell::before {
- content: "\f8b3";
-}
-
-.fa-baht-sign::before {
- content: "\e0ac";
-}
-
-.fa-corner::before {
- content: "\e3fe";
-}
-
-.fa-chevrons-right::before {
- content: "\f324";
-}
-
-.fa-chevron-double-right::before {
- content: "\f324";
-}
-
-.fa-book-open::before {
- content: "\f518";
-}
-
-.fa-book-journal-whills::before {
- content: "\f66a";
-}
-
-.fa-journal-whills::before {
- content: "\f66a";
-}
-
-.fa-inhaler::before {
- content: "\f5f9";
-}
-
-.fa-handcuffs::before {
- content: "\e4f8";
-}
-
-.fa-snake::before {
- content: "\f716";
-}
-
-.fa-triangle-exclamation::before {
- content: "\f071";
-}
-
-.fa-exclamation-triangle::before {
- content: "\f071";
-}
-
-.fa-warning::before {
- content: "\f071";
-}
-
-.fa-note-medical::before {
- content: "\e200";
-}
-
-.fa-database::before {
- content: "\f1c0";
-}
-
-.fa-down-left::before {
- content: "\e16a";
-}
-
-.fa-share::before {
- content: "\f064";
-}
-
-.fa-arrow-turn-right::before {
- content: "\f064";
-}
-
-.fa-mail-forward::before {
- content: "\f064";
-}
-
-.fa-face-thinking::before {
- content: "\e39b";
-}
-
-.fa-turn-down-right::before {
- content: "\e455";
-}
-
-.fa-bottle-droplet::before {
- content: "\e4c4";
-}
-
-.fa-mask-face::before {
- content: "\e1d7";
-}
-
-.fa-hill-rockslide::before {
- content: "\e508";
-}
-
-.fa-scanner-keyboard::before {
- content: "\f489";
-}
-
-.fa-circle-o::before {
- content: "\e119";
-}
-
-.fa-grid-horizontal::before {
- content: "\e307";
-}
-
-.fa-message-dollar::before {
- content: "\f650";
-}
-
-.fa-comment-alt-dollar::before {
- content: "\f650";
-}
-
-.fa-right-left::before {
- content: "\f362";
-}
-
-.fa-exchange-alt::before {
- content: "\f362";
-}
-
-.fa-columns-3::before {
- content: "\e361";
-}
-
-.fa-paper-plane::before {
- content: "\f1d8";
-}
-
-.fa-road-circle-exclamation::before {
- content: "\e565";
-}
-
-.fa-dungeon::before {
- content: "\f6d9";
-}
-
-.fa-hand-holding-box::before {
- content: "\f47b";
-}
-
-.fa-input-text::before {
- content: "\e1bf";
-}
-
-.fa-window-flip::before {
- content: "\f40f";
-}
-
-.fa-window-alt::before {
- content: "\f40f";
-}
-
-.fa-align-right::before {
- content: "\f038";
-}
-
-.fa-scanner-gun::before {
- content: "\f488";
-}
-
-.fa-scanner::before {
- content: "\f488";
-}
-
-.fa-tire::before {
- content: "\f631";
-}
-
-.fa-engine::before {
- content: "\e16e";
-}
-
-.fa-money-bill-1-wave::before {
- content: "\f53b";
-}
-
-.fa-money-bill-wave-alt::before {
- content: "\f53b";
-}
-
-.fa-life-ring::before {
- content: "\f1cd";
-}
-
-.fa-hands::before {
- content: "\f2a7";
-}
-
-.fa-sign-language::before {
- content: "\f2a7";
-}
-
-.fa-signing::before {
- content: "\f2a7";
-}
-
-.fa-circle-caret-right::before {
- content: "\f330";
-}
-
-.fa-caret-circle-right::before {
- content: "\f330";
-}
-
-.fa-wheat::before {
- content: "\f72d";
-}
-
-.fa-file-spreadsheet::before {
- content: "\f65b";
-}
-
-.fa-audio-description-slash::before {
- content: "\e0a8";
-}
-
-.fa-calendar-day::before {
- content: "\f783";
-}
-
-.fa-water-ladder::before {
- content: "\f5c5";
-}
-
-.fa-ladder-water::before {
- content: "\f5c5";
-}
-
-.fa-swimming-pool::before {
- content: "\f5c5";
-}
-
-.fa-arrows-up-down::before {
- content: "\f07d";
-}
-
-.fa-arrows-v::before {
- content: "\f07d";
-}
-
-.fa-chess-pawn-piece::before {
- content: "\f444";
-}
-
-.fa-chess-pawn-alt::before {
- content: "\f444";
-}
-
-.fa-face-grimace::before {
- content: "\f57f";
-}
-
-.fa-grimace::before {
- content: "\f57f";
-}
-
-.fa-wheelchair-move::before {
- content: "\e2ce";
-}
-
-.fa-wheelchair-alt::before {
- content: "\e2ce";
-}
-
-.fa-turn-down::before {
- content: "\f3be";
-}
-
-.fa-level-down-alt::before {
- content: "\f3be";
-}
-
-.fa-square-s::before {
- content: "\e27d";
-}
-
-.fa-rectangle-barcode::before {
- content: "\f463";
-}
-
-.fa-barcode-alt::before {
- content: "\f463";
-}
-
-.fa-person-walking-arrow-right::before {
- content: "\e552";
-}
-
-.fa-square-envelope::before {
- content: "\f199";
-}
-
-.fa-envelope-square::before {
- content: "\f199";
-}
-
-.fa-dice::before {
- content: "\f522";
-}
-
-.fa-unicorn::before {
- content: "\f727";
-}
-
-.fa-bowling-ball::before {
- content: "\f436";
-}
-
-.fa-pompebled::before {
- content: "\e43d";
-}
-
-.fa-brain::before {
- content: "\f5dc";
-}
-
-.fa-watch-smart::before {
- content: "\e2cc";
-}
-
-.fa-book-user::before {
- content: "\f7e7";
-}
-
-.fa-sensor-cloud::before {
- content: "\e02c";
-}
-
-.fa-sensor-smoke::before {
- content: "\e02c";
-}
-
-.fa-clapperboard-play::before {
- content: "\e132";
-}
-
-.fa-bandage::before {
- content: "\f462";
-}
-
-.fa-band-aid::before {
- content: "\f462";
-}
-
-.fa-calendar-minus::before {
- content: "\f272";
-}
-
-.fa-circle-xmark::before {
- content: "\f057";
-}
-
-.fa-times-circle::before {
- content: "\f057";
-}
-
-.fa-xmark-circle::before {
- content: "\f057";
-}
-
-.fa-circle-4::before {
- content: "\e0f1";
-}
-
-.fa-gifts::before {
- content: "\f79c";
-}
-
-.fa-album-collection::before {
- content: "\f8a0";
-}
-
-.fa-hotel::before {
- content: "\f594";
-}
-
-.fa-earth-asia::before {
- content: "\f57e";
-}
-
-.fa-globe-asia::before {
- content: "\f57e";
-}
-
-.fa-id-card-clip::before {
- content: "\f47f";
-}
-
-.fa-id-card-alt::before {
- content: "\f47f";
-}
-
-.fa-magnifying-glass-plus::before {
- content: "\f00e";
-}
-
-.fa-search-plus::before {
- content: "\f00e";
-}
-
-.fa-thumbs-up::before {
- content: "\f164";
-}
-
-.fa-cloud-showers::before {
- content: "\f73f";
-}
-
-.fa-user-clock::before {
- content: "\f4fd";
-}
-
-.fa-onion::before {
- content: "\e427";
-}
-
-.fa-clock-twelve-thirty::before {
- content: "\e359";
-}
-
-.fa-arrow-down-to-dotted-line::before {
- content: "\e095";
-}
-
-.fa-hand-dots::before {
- content: "\f461";
-}
-
-.fa-allergies::before {
- content: "\f461";
-}
-
-.fa-file-invoice::before {
- content: "\f570";
-}
-
-.fa-window-minimize::before {
- content: "\f2d1";
-}
-
-.fa-rectangle-wide::before {
- content: "\f2fc";
-}
-
-.fa-comment-arrow-up::before {
- content: "\e144";
-}
-
-.fa-garlic::before {
- content: "\e40e";
-}
-
-.fa-mug-saucer::before {
- content: "\f0f4";
-}
-
-.fa-coffee::before {
- content: "\f0f4";
-}
-
-.fa-brush::before {
- content: "\f55d";
-}
-
-.fa-tree-decorated::before {
- content: "\f7dc";
-}
-
-.fa-mask::before {
- content: "\f6fa";
-}
-
-.fa-calendar-heart::before {
- content: "\e0d3";
-}
-
-.fa-magnifying-glass-minus::before {
- content: "\f010";
-}
-
-.fa-search-minus::before {
- content: "\f010";
-}
-
-.fa-flower::before {
- content: "\f7ff";
-}
-
-.fa-ruler-vertical::before {
- content: "\f548";
-}
-
-.fa-user-large::before {
- content: "\f406";
-}
-
-.fa-user-alt::before {
- content: "\f406";
-}
-
-.fa-starship-freighter::before {
- content: "\e03a";
-}
-
-.fa-train-tram::before {
- content: "\e5b4";
-}
-
-.fa-bridge-suspension::before {
- content: "\e4cd";
-}
-
-.fa-trash-check::before {
- content: "\e2af";
-}
-
-.fa-user-nurse::before {
- content: "\f82f";
-}
-
-.fa-boombox::before {
- content: "\f8a5";
-}
-
-.fa-syringe::before {
- content: "\f48e";
-}
-
-.fa-cloud-sun::before {
- content: "\f6c4";
-}
-
-.fa-shield-exclamation::before {
- content: "\e247";
-}
-
-.fa-stopwatch-20::before {
- content: "\e06f";
-}
-
-.fa-square-full::before {
- content: "\f45c";
-}
-
-.fa-grip-dots::before {
- content: "\e410";
-}
-
-.fa-comment-exclamation::before {
- content: "\f4af";
-}
-
-.fa-pen-swirl::before {
- content: "\e214";
-}
-
-.fa-falafel::before {
- content: "\e40a";
-}
-
-.fa-circle-2::before {
- content: "\e0ef";
-}
-
-.fa-magnet::before {
- content: "\f076";
-}
-
-.fa-jar::before {
- content: "\e516";
-}
-
-.fa-gramophone::before {
- content: "\f8bd";
-}
-
-.fa-dice-d12::before {
- content: "\f6ce";
-}
-
-.fa-note-sticky::before {
- content: "\f249";
-}
-
-.fa-sticky-note::before {
- content: "\f249";
-}
-
-.fa-down::before {
- content: "\f354";
-}
-
-.fa-arrow-alt-down::before {
- content: "\f354";
-}
-
-.fa-hundred-points::before {
- content: "\e41c";
-}
-
-.fa-100::before {
- content: "\e41c";
-}
-
-.fa-paperclip-vertical::before {
- content: "\e3c2";
-}
-
-.fa-wind-warning::before {
- content: "\f776";
-}
-
-.fa-wind-circle-exclamation::before {
- content: "\f776";
-}
-
-.fa-location-pin-slash::before {
- content: "\f60c";
-}
-
-.fa-map-marker-slash::before {
- content: "\f60c";
-}
-
-.fa-face-sad-sweat::before {
- content: "\e38a";
-}
-
-.fa-bug-slash::before {
- content: "\e490";
-}
-
-.fa-cupcake::before {
- content: "\e402";
-}
-
-.fa-light-switch-off::before {
- content: "\e018";
-}
-
-.fa-toggle-large-off::before {
- content: "\e5b0";
-}
-
-.fa-pen-fancy-slash::before {
- content: "\e210";
-}
-
-.fa-truck-container::before {
- content: "\f4dc";
-}
-
-.fa-boot::before {
- content: "\f782";
-}
-
-.fa-arrow-up-from-water-pump::before {
- content: "\e4b6";
-}
-
-.fa-file-check::before {
- content: "\f316";
-}
-
-.fa-bone::before {
- content: "\f5d7";
-}
-
-.fa-cards-blank::before {
- content: "\e4df";
-}
-
-.fa-circle-3::before {
- content: "\e0f0";
-}
-
-.fa-bench-tree::before {
- content: "\e2e7";
-}
-
-.fa-keyboard-brightness-low::before {
- content: "\e1c1";
-}
-
-.fa-ski-boot-ski::before {
- content: "\e3cd";
-}
-
-.fa-brain-circuit::before {
- content: "\e0c6";
-}
-
-.fa-user-injured::before {
- content: "\f728";
-}
-
-.fa-block-brick-fire::before {
- content: "\e3dc";
-}
-
-.fa-firewall::before {
- content: "\e3dc";
-}
-
-.fa-face-sad-tear::before {
- content: "\f5b4";
-}
-
-.fa-sad-tear::before {
- content: "\f5b4";
-}
-
-.fa-plane::before {
- content: "\f072";
-}
-
-.fa-tent-arrows-down::before {
- content: "\e581";
-}
-
-.fa-exclamation::before {
- content: "\21";
-}
-
-.fa-arrows-spin::before {
- content: "\e4bb";
-}
-
-.fa-face-smile-relaxed::before {
- content: "\e392";
-}
-
-.fa-comment-xmark::before {
- content: "\f4b5";
-}
-
-.fa-comment-times::before {
- content: "\f4b5";
-}
-
-.fa-print::before {
- content: "\f02f";
-}
-
-.fa-turkish-lira-sign::before {
- content: "\e2bb";
-}
-
-.fa-try::before {
- content: "\e2bb";
-}
-
-.fa-turkish-lira::before {
- content: "\e2bb";
-}
-
-.fa-face-nose-steam::before {
- content: "\e382";
-}
-
-.fa-circle-waveform-lines::before {
- content: "\e12d";
-}
-
-.fa-waveform-circle::before {
- content: "\e12d";
-}
-
-.fa-dollar-sign::before {
- content: "\24";
-}
-
-.fa-dollar::before {
- content: "\24";
-}
-
-.fa-usd::before {
- content: "\24";
-}
-
-.fa-ferris-wheel::before {
- content: "\e174";
-}
-
-.fa-computer-speaker::before {
- content: "\f8b2";
-}
-
-.fa-skull-cow::before {
- content: "\f8de";
-}
-
-.fa-x::before {
- content: "\58";
-}
-
-.fa-magnifying-glass-dollar::before {
- content: "\f688";
-}
-
-.fa-search-dollar::before {
- content: "\f688";
-}
-
-.fa-users-gear::before {
- content: "\f509";
-}
-
-.fa-users-cog::before {
- content: "\f509";
-}
-
-.fa-person-military-pointing::before {
- content: "\e54a";
-}
-
-.fa-building-columns::before {
- content: "\f19c";
-}
-
-.fa-bank::before {
- content: "\f19c";
-}
-
-.fa-institution::before {
- content: "\f19c";
-}
-
-.fa-museum::before {
- content: "\f19c";
-}
-
-.fa-university::before {
- content: "\f19c";
-}
-
-.fa-circle-t::before {
- content: "\e124";
-}
-
-.fa-sack::before {
- content: "\f81c";
-}
-
-.fa-grid-2::before {
- content: "\e196";
-}
-
-.fa-camera-cctv::before {
- content: "\f8ac";
-}
-
-.fa-cctv::before {
- content: "\f8ac";
-}
-
-.fa-umbrella::before {
- content: "\f0e9";
-}
-
-.fa-trowel::before {
- content: "\e589";
-}
-
-.fa-horizontal-rule::before {
- content: "\f86c";
-}
-
-.fa-bed-front::before {
- content: "\f8f7";
-}
-
-.fa-bed-alt::before {
- content: "\f8f7";
-}
-
-.fa-d::before {
- content: "\44";
-}
-
-.fa-stapler::before {
- content: "\e5af";
-}
-
-.fa-masks-theater::before {
- content: "\f630";
-}
-
-.fa-theater-masks::before {
- content: "\f630";
-}
-
-.fa-kip-sign::before {
- content: "\e1c4";
-}
-
-.fa-face-woozy::before {
- content: "\e3a2";
-}
-
-.fa-cloud-question::before {
- content: "\e492";
-}
-
-.fa-pineapple::before {
- content: "\e31f";
-}
-
-.fa-hand-point-left::before {
- content: "\f0a5";
-}
-
-.fa-gallery-thumbnails::before {
- content: "\e3aa";
-}
-
-.fa-circle-j::before {
- content: "\e112";
-}
-
-.fa-eyes::before {
- content: "\e367";
-}
-
-.fa-handshake-simple::before {
- content: "\f4c6";
-}
-
-.fa-handshake-alt::before {
- content: "\f4c6";
-}
-
-.fa-page-caret-up::before {
- content: "\e42a";
-}
-
-.fa-file-caret-up::before {
- content: "\e42a";
-}
-
-.fa-jet-fighter::before {
- content: "\f0fb";
-}
-
-.fa-fighter-jet::before {
- content: "\f0fb";
-}
-
-.fa-comet::before {
- content: "\e003";
-}
-
-.fa-square-share-nodes::before {
- content: "\f1e1";
-}
-
-.fa-share-alt-square::before {
- content: "\f1e1";
-}
-
-.fa-shield-keyhole::before {
- content: "\e248";
-}
-
-.fa-barcode::before {
- content: "\f02a";
-}
-
-.fa-plus-minus::before {
- content: "\e43c";
-}
-
-.fa-square-sliders-vertical::before {
- content: "\f3f2";
-}
-
-.fa-sliders-v-square::before {
- content: "\f3f2";
-}
-
-.fa-video::before {
- content: "\f03d";
-}
-
-.fa-video-camera::before {
- content: "\f03d";
-}
-
-.fa-message-middle::before {
- content: "\e1e1";
-}
-
-.fa-comment-middle-alt::before {
- content: "\e1e1";
-}
-
-.fa-graduation-cap::before {
- content: "\f19d";
-}
-
-.fa-mortar-board::before {
- content: "\f19d";
-}
-
-.fa-hand-holding-medical::before {
- content: "\e05c";
-}
-
-.fa-person-circle-check::before {
- content: "\e53e";
-}
-
-.fa-square-z::before {
- content: "\e288";
-}
-
-.fa-message-text::before {
- content: "\e1e6";
-}
-
-.fa-comment-alt-text::before {
- content: "\e1e6";
-}
-
-.fa-turn-up::before {
- content: "\f3bf";
-}
-
-.fa-level-up-alt::before {
- content: "\f3bf";
-}
-
-.sr-only,
-.fa-sr-only {
- position: absolute;
- width: 1px;
- height: 1px;
- padding: 0;
- margin: -1px;
- overflow: hidden;
- clip: rect(0, 0, 0, 0);
- white-space: nowrap;
- border-width: 0;
-}
-
-.sr-only-focusable:not(:focus),
-.fa-sr-only-focusable:not(:focus) {
- position: absolute;
- width: 1px;
- height: 1px;
- padding: 0;
- margin: -1px;
- overflow: hidden;
- clip: rect(0, 0, 0, 0);
- white-space: nowrap;
- border-width: 0;
-}
diff --git a/static/fonts/font-awesome/regular.css b/static/fonts/font-awesome/regular.css
deleted file mode 100644
index 8b7254fd7..000000000
--- a/static/fonts/font-awesome/regular.css
+++ /dev/null
@@ -1,25 +0,0 @@
-/*!
- * Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
- * License - https://fontawesome.com/license (Commercial License)
- * Copyright 2022 Fonticons, Inc.
- */
-:root,
-:host {
- --fa-style-family-classic: "Font Awesome 6 Pro";
- --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Pro";
-}
-
-@font-face {
- font-family: "Font Awesome 6 Pro";
- font-style: normal;
- font-weight: 400;
- font-display: block;
- src:
- url("/fonts/font-awesome/fa-regular-400.woff2") format("woff2"),
- url("/fonts/font-awesome/fa-regular-400.ttf") format("truetype");
-}
-
-.far,
-.fa-regular {
- font-weight: 400 !important;
-}
diff --git a/static/fonts/font-awesome/solid.css b/static/fonts/font-awesome/solid.css
deleted file mode 100644
index d2b3af67c..000000000
--- a/static/fonts/font-awesome/solid.css
+++ /dev/null
@@ -1,25 +0,0 @@
-/*!
- * Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
- * License - https://fontawesome.com/license (Commercial License)
- * Copyright 2022 Fonticons, Inc.
- */
-:root,
-:host {
- --fa-style-family-classic: "Font Awesome 6 Pro";
- --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Pro";
-}
-
-@font-face {
- font-family: "Font Awesome 6 Pro";
- font-style: normal;
- font-weight: 900;
- font-display: block;
- src:
- url("/fonts/font-awesome/fa-solid-900.woff2") format("woff2"),
- url("/fonts/font-awesome/fa-solid-900.ttf") format("truetype");
-}
-
-.fas,
-.fa-solid {
- font-weight: 900 !important;
-}
diff --git a/static/img/avatars/AntoinePrv.png b/static/img/avatars/AntoinePrv.png
new file mode 100644
index 000000000..451b50ee7
Binary files /dev/null and b/static/img/avatars/AntoinePrv.png differ
diff --git a/static/img/avatars/Guy.png b/static/img/avatars/Guy.png
new file mode 100755
index 000000000..1cdbe312d
Binary files /dev/null and b/static/img/avatars/Guy.png differ
diff --git a/static/img/avatars/Marion.png b/static/img/avatars/Marion.png
new file mode 100644
index 000000000..12f0c7db7
Binary files /dev/null and b/static/img/avatars/Marion.png differ
diff --git a/static/img/avatars/Olivier.png b/static/img/avatars/Olivier.png
new file mode 100644
index 000000000..c41c0cef1
Binary files /dev/null and b/static/img/avatars/Olivier.png differ
diff --git a/static/img/avatars/Ousema.png b/static/img/avatars/Ousema.png
new file mode 100644
index 000000000..b3df8d5f4
Binary files /dev/null and b/static/img/avatars/Ousema.png differ
diff --git a/static/img/avatars/QuantStack.html b/static/img/avatars/QuantStack.html
new file mode 100644
index 000000000..b53145964
--- /dev/null
+++ b/static/img/avatars/QuantStack.html
@@ -0,0 +1,73 @@
+
+
+
+
+
+ QuantStack
+
+
+
+
+
+
Check out our projects available for funding! Help us to modernize nbconvert
funded at 25 %
Help us to make mamba more complete
funded at 33 %
+
+
+
+
+
\ No newline at end of file
diff --git a/static/img/avatars/QuantStack_files/styles.css b/static/img/avatars/QuantStack_files/styles.css
new file mode 100644
index 000000000..39fabdecf
--- /dev/null
+++ b/static/img/avatars/QuantStack_files/styles.css
@@ -0,0 +1,6669 @@
+@import url(https://fonts.googleapis.com/css2?family=Roboto);
+@import url(https://fonts.cdnfonts.com/css/bebas-neue);
+@import url(https://fonts.cdnfonts.com/css/rubik-one);
+@import url(https://fonts.cdnfonts.com/css/roboto-flex);
+@import url(https://fonts.googleapis.com/css2?family=Dosis);
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/* Common */
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+:root {
+ --ifm-color-scheme: light;
+
+ /* Colors. */
+ --ifm-dark-value: 10%;
+ --ifm-darker-value: 15%;
+ --ifm-darkest-value: 30%;
+ --ifm-light-value: 15%;
+ --ifm-lighter-value: 30%;
+ --ifm-lightest-value: 50%;
+
+ /*
+ This seems like a lot, but we want to ensure enough contrast.
+ Goal is to have a min score of 3 on https://www.myndex.com/APCA/fullmatrix
+ For fontWeight 400 + score 3, the cell must show a value < 16px (fontsize we use in places like alerts)
+ See also https://github.com/facebookincubator/infima/issues/55#issuecomment-884023075
+ */
+ --ifm-contrast-background-value: 90%;
+ --ifm-contrast-foreground-value: 70%;
+ /* Using slightly different values for dark mode */
+ --ifm-contrast-background-dark-value: 70%;
+ --ifm-contrast-foreground-dark-value: 90%;
+
+ --ifm-color-primary: #3578e5;
+ --ifm-color-secondary: #ebedf0;
+ --ifm-color-success: #00a400;
+ --ifm-color-info: #54c7ec;
+ --ifm-color-warning: #ffba00;
+ --ifm-color-danger: #fa383e;
+ --ifm-color-primary-dark: rgb(48, 108, 206);
+ --ifm-color-primary-darker: rgb(45, 102, 195);
+ --ifm-color-primary-darkest: rgb(37, 84, 160);
+ --ifm-color-primary-light: rgb(83, 140, 233);
+ --ifm-color-primary-lighter: rgb(114, 161, 237);
+ --ifm-color-primary-lightest: rgb(154, 188, 242);
+ --ifm-color-primary-contrast-background: rgb(235, 242, 252);
+ --ifm-color-primary-contrast-foreground: rgb(16, 36, 69);
+ --ifm-color-secondary-dark: rgb(212, 213, 216);
+ --ifm-color-secondary-darker: rgb(200, 201, 204);
+ --ifm-color-secondary-darkest: rgb(164, 166, 168);
+ --ifm-color-secondary-light: rgb(238, 240, 242);
+ --ifm-color-secondary-lighter: rgb(241, 242, 245);
+ --ifm-color-secondary-lightest: rgb(245, 246, 248);
+ --ifm-color-secondary-contrast-background: rgb(253, 253, 254);
+ --ifm-color-secondary-contrast-foreground: rgb(71, 71, 72);
+ --ifm-color-success-dark: rgb(0, 148, 0);
+ --ifm-color-success-darker: rgb(0, 139, 0);
+ --ifm-color-success-darkest: rgb(0, 115, 0);
+ --ifm-color-success-light: rgb(38, 178, 38);
+ --ifm-color-success-lighter: rgb(77, 191, 77);
+ --ifm-color-success-lightest: rgb(128, 210, 128);
+ --ifm-color-success-contrast-background: rgb(230, 246, 230);
+ --ifm-color-success-contrast-foreground: rgb(0, 49, 0);
+ --ifm-color-info-dark: rgb(76, 179, 212);
+ --ifm-color-info-darker: rgb(71, 169, 201);
+ --ifm-color-info-darkest: rgb(59, 139, 165);
+ --ifm-color-info-light: rgb(110, 207, 239);
+ --ifm-color-info-lighter: rgb(135, 216, 242);
+ --ifm-color-info-lightest: rgb(170, 227, 246);
+ --ifm-color-info-contrast-background: rgb(238, 249, 253);
+ --ifm-color-info-contrast-foreground: rgb(25, 60, 71);
+ --ifm-color-warning-dark: rgb(230, 167, 0);
+ --ifm-color-warning-darker: rgb(217, 158, 0);
+ --ifm-color-warning-darkest: rgb(179, 130, 0);
+ --ifm-color-warning-light: rgb(255, 196, 38);
+ --ifm-color-warning-lighter: rgb(255, 207, 77);
+ --ifm-color-warning-lightest: rgb(255, 221, 128);
+ --ifm-color-warning-contrast-background: rgb(255, 248, 230);
+ --ifm-color-warning-contrast-foreground: rgb(77, 56, 0);
+ --ifm-color-danger-dark: rgb(225, 50, 56);
+ --ifm-color-danger-darker: rgb(213, 48, 53);
+ --ifm-color-danger-darkest: rgb(175, 39, 43);
+ --ifm-color-danger-light: rgb(251, 86, 91);
+ --ifm-color-danger-lighter: rgb(251, 116, 120);
+ --ifm-color-danger-lightest: rgb(253, 156, 159);
+ --ifm-color-danger-contrast-background: rgb(255, 235, 236);
+ --ifm-color-danger-contrast-foreground: rgb(75, 17, 19);
+
+ --ifm-color-white: #fff;
+ --ifm-color-black: #000;
+
+ --ifm-color-gray-0: var(--ifm-color-white);
+ --ifm-color-gray-100: #f5f6f7;
+ --ifm-color-gray-200: #ebedf0;
+ --ifm-color-gray-300: #dadde1;
+ --ifm-color-gray-400: #ccd0d5;
+ --ifm-color-gray-500: #bec3c9;
+ --ifm-color-gray-600: #8d949e;
+ --ifm-color-gray-700: #606770;
+ --ifm-color-gray-800: #444950;
+ --ifm-color-gray-900: #1c1e21;
+ --ifm-color-gray-1000: var(--ifm-color-black);
+
+ --ifm-color-emphasis-0: var(--ifm-color-gray-0);
+ --ifm-color-emphasis-100: var(--ifm-color-gray-100);
+ --ifm-color-emphasis-200: var(--ifm-color-gray-200);
+ --ifm-color-emphasis-300: var(--ifm-color-gray-300);
+ --ifm-color-emphasis-400: var(--ifm-color-gray-400);
+ --ifm-color-emphasis-500: var(--ifm-color-gray-500);
+ --ifm-color-emphasis-600: var(--ifm-color-gray-600);
+ --ifm-color-emphasis-700: var(--ifm-color-gray-700);
+ --ifm-color-emphasis-800: var(--ifm-color-gray-800);
+ --ifm-color-emphasis-900: var(--ifm-color-gray-900);
+ --ifm-color-emphasis-1000: var(--ifm-color-gray-1000);
+
+ /* Base. */
+ --ifm-color-content: var(--ifm-color-emphasis-900);
+ --ifm-color-content-inverse: var(--ifm-color-emphasis-0);
+ --ifm-color-content-secondary: #525860;
+
+ --ifm-background-color: transparent; /* Body's background. */
+ --ifm-background-surface-color: var(--ifm-color-content-inverse);
+ --ifm-global-border-width: 1px;
+ --ifm-global-radius: 0.4rem;
+
+ --ifm-hover-overlay: rgba(0, 0, 0, 0.05);
+
+ /* Typography. */
+ --ifm-font-color-base: var(--ifm-color-content);
+ --ifm-font-color-base-inverse: var(--ifm-color-content-inverse);
+ --ifm-font-color-secondary: var(--ifm-color-content-secondary);
+ --ifm-font-family-base: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont,
+ 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji',
+ 'Segoe UI Emoji', 'Segoe UI Symbol';
+ --ifm-font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas,
+ 'Liberation Mono', 'Courier New', monospace;
+ --ifm-font-size-base: 100%;
+
+ --ifm-font-weight-light: 300;
+ --ifm-font-weight-normal: 400;
+ --ifm-font-weight-semibold: 500;
+ --ifm-font-weight-bold: 700;
+
+ --ifm-font-weight-base: var(--ifm-font-weight-normal);
+ --ifm-line-height-base: 1.65;
+
+ /* Spacing. */
+ --ifm-global-spacing: 1rem;
+ --ifm-spacing-vertical: var(--ifm-global-spacing);
+ --ifm-spacing-horizontal: var(--ifm-global-spacing);
+
+ /* Transitions. */
+ --ifm-transition-fast: 200ms;
+ --ifm-transition-slow: 400ms;
+ --ifm-transition-timing-default: cubic-bezier(0.08, 0.52, 0.52, 1);
+
+ /* Shadows. */
+ --ifm-global-shadow-lw: 0 1px 2px 0 rgba(0, 0, 0, 0.1);
+ --ifm-global-shadow-md: 0 5px 40px rgba(0, 0, 0, 0.2);
+ --ifm-global-shadow-tl: 0 12px 28px 0 rgba(0, 0, 0, 0.2),
+ 0 2px 4px 0 rgba(0, 0, 0, 0.1);
+
+ /* Z-index. */
+ --ifm-z-index-dropdown: 100;
+ --ifm-z-index-fixed: 200;
+ --ifm-z-index-overlay: 400;
+ --ifm-container-width: 1140px;
+ --ifm-container-width-xl: 1320px;
+ --ifm-code-background: rgb(246, 247, 248);
+ --ifm-code-border-radius: var(--ifm-global-radius);
+ --ifm-code-font-size: 90%;
+ --ifm-code-padding-horizontal: 0.1rem;
+ --ifm-code-padding-vertical: 0.1rem;
+
+ --ifm-pre-background: var(--ifm-code-background);
+ --ifm-pre-border-radius: var(--ifm-code-border-radius);
+ --ifm-pre-color: inherit;
+ --ifm-pre-line-height: 1.45;
+ --ifm-pre-padding: 1rem;
+ --ifm-heading-color: inherit;
+ --ifm-heading-margin-top: 0;
+ --ifm-heading-margin-bottom: var(--ifm-spacing-vertical);
+ --ifm-heading-font-family: var(--ifm-font-family-base);
+ --ifm-heading-font-weight: var(--ifm-font-weight-bold);
+ --ifm-heading-line-height: 1.25;
+
+ --ifm-h1-font-size: 2rem;
+ --ifm-h2-font-size: 1.5rem;
+ --ifm-h3-font-size: 1.25rem;
+ --ifm-h4-font-size: 1rem;
+ --ifm-h5-font-size: 0.875rem;
+ --ifm-h6-font-size: 0.85rem;
+ --ifm-image-alignment-padding: 1.25rem;
+ /* Leading is the distance between two baselines */
+ /* TODO: add appropriate mobile leading */
+ --ifm-leading-desktop: 1.25;
+ --ifm-leading: calc(var(--ifm-leading-desktop) * 1rem);
+ --ifm-list-left-padding: 2rem;
+ --ifm-list-margin: 1rem;
+ --ifm-list-item-margin: 0.25rem;
+ --ifm-list-paragraph-margin: 1rem;
+ --ifm-table-cell-padding: 0.75rem;
+
+ --ifm-table-background: transparent;
+ --ifm-table-stripe-background: rgba(0, 0, 0, 0.03);
+
+ --ifm-table-border-width: 1px;
+ --ifm-table-border-color: var(--ifm-color-emphasis-300);
+
+ --ifm-table-head-background: inherit;
+ --ifm-table-head-color: inherit;
+ --ifm-table-head-font-weight: var(--ifm-font-weight-bold);
+
+ --ifm-table-cell-color: inherit;
+ /* Links. */
+ --ifm-link-color: var(--ifm-color-primary);
+ --ifm-link-decoration: none;
+ --ifm-link-hover-color: var(--ifm-link-color);
+ --ifm-link-hover-decoration: underline;
+
+ /* Paragraphs. */
+ --ifm-paragraph-margin-bottom: var(--ifm-leading);
+
+ /* Blockquotes. */
+ --ifm-blockquote-font-size: var(--ifm-font-size-base);
+ --ifm-blockquote-border-left-width: 2px;
+ --ifm-blockquote-padding-horizontal: var(--ifm-spacing-horizontal);
+ --ifm-blockquote-padding-vertical: 0;
+ --ifm-blockquote-shadow: none;
+ --ifm-blockquote-color: var(--ifm-color-emphasis-800);
+ --ifm-blockquote-border-color: var(--ifm-color-emphasis-300);
+
+ /* Horizontal Rules. */
+ --ifm-hr-background-color: var(--ifm-color-emphasis-500);
+ --ifm-hr-height: 1px;
+ --ifm-hr-margin-vertical: 1.5rem;
+ --ifm-scrollbar-size: 7px;
+ --ifm-scrollbar-track-background-color: #f1f1f1;
+ --ifm-scrollbar-thumb-background-color: #c0c0c0;
+ --ifm-scrollbar-thumb-hover-background-color: #a7a7a7;
+ --ifm-alert-background-color: inherit; /* Set a default which will be overridden later. */
+ --ifm-alert-border-color: inherit; /* Set a default which will be overridden later. */
+ --ifm-alert-border-radius: var(--ifm-global-radius);
+ --ifm-alert-border-width: 0px; /* For users that want to easily add a border */
+ --ifm-alert-border-left-width: 5px;
+ --ifm-alert-color: var(--ifm-font-color-base);
+ --ifm-alert-padding-horizontal: var(--ifm-spacing-horizontal);
+ --ifm-alert-padding-vertical: var(--ifm-spacing-vertical);
+ --ifm-alert-shadow: var(--ifm-global-shadow-lw);
+ --ifm-avatar-intro-margin: 1rem;
+ --ifm-avatar-intro-alignment: inherit;
+ --ifm-avatar-photo-size: 3rem;
+ --ifm-badge-background-color: inherit; /* Set a default which will be overridden later. */
+ --ifm-badge-border-color: inherit; /* Set a default which will be overridden later. */
+ --ifm-badge-border-radius: var(--ifm-global-radius);
+ --ifm-badge-border-width: var(--ifm-global-border-width);
+ --ifm-badge-color: var(--ifm-color-white);
+ --ifm-badge-padding-horizontal: calc(var(--ifm-spacing-horizontal) * 0.5);
+ --ifm-badge-padding-vertical: calc(var(--ifm-spacing-vertical) * 0.25);
+ --ifm-breadcrumb-border-radius: 1.5rem;
+ --ifm-breadcrumb-spacing: 0.5rem;
+ --ifm-breadcrumb-color-active: var(--ifm-color-primary);
+ --ifm-breadcrumb-item-background-active: var(--ifm-hover-overlay);
+ --ifm-breadcrumb-padding-horizontal: 0.8rem;
+ --ifm-breadcrumb-padding-vertical: 0.4rem;
+ --ifm-breadcrumb-size-multiplier: 1;
+ --ifm-breadcrumb-separator: url('data:image/svg+xml;utf8, ');
+ --ifm-breadcrumb-separator-filter: none;
+ --ifm-breadcrumb-separator-size: 0.5rem;
+ --ifm-breadcrumb-separator-size-multiplier: 1.25;
+ --ifm-button-background-color: inherit;
+ --ifm-button-border-color: var(--ifm-button-background-color);
+ --ifm-button-border-width: var(--ifm-global-border-width);
+ --ifm-button-color: var(--ifm-font-color-base-inverse);
+ --ifm-button-font-weight: var(--ifm-font-weight-bold);
+ --ifm-button-padding-horizontal: 1.5rem;
+ --ifm-button-padding-vertical: 0.375rem;
+ --ifm-button-size-multiplier: 1;
+ --ifm-button-transition-duration: var(--ifm-transition-fast);
+ --ifm-button-border-radius: calc(
+ var(--ifm-global-radius) * var(--ifm-button-size-multiplier)
+ );
+ --ifm-button-group-spacing: 2px;
+ --ifm-card-background-color: var(--ifm-background-surface-color);
+ --ifm-card-border-radius: calc(var(--ifm-global-radius) * 2);
+ --ifm-card-horizontal-spacing: var(--ifm-global-spacing);
+ --ifm-card-vertical-spacing: var(--ifm-global-spacing);
+ --ifm-toc-border-color: var(--ifm-color-emphasis-300);
+ --ifm-toc-link-color: var(--ifm-color-content-secondary);
+ --ifm-toc-padding-vertical: 0.5rem;
+ --ifm-toc-padding-horizontal: 0.5rem;
+ --ifm-dropdown-background-color: var(--ifm-background-surface-color);
+ --ifm-dropdown-font-weight: var(--ifm-font-weight-semibold);
+ --ifm-dropdown-link-color: var(--ifm-font-color-base);
+ --ifm-dropdown-hover-background-color: var(--ifm-hover-overlay);
+ --ifm-footer-background-color: var(--ifm-color-emphasis-100);
+ --ifm-footer-color: inherit;
+ --ifm-footer-link-color: var(--ifm-color-emphasis-700);
+ --ifm-footer-link-hover-color: var(--ifm-color-primary);
+ --ifm-footer-link-horizontal-spacing: 0.5rem;
+ --ifm-footer-padding-horizontal: calc(var(--ifm-spacing-horizontal) * 2);
+ --ifm-footer-padding-vertical: calc(var(--ifm-spacing-vertical) * 2);
+ --ifm-footer-title-color: inherit;
+ --ifm-footer-logo-max-width: min(30rem, 90vw);
+ --ifm-hero-background-color: var(--ifm-background-surface-color);
+ --ifm-hero-text-color: var(--ifm-color-emphasis-800);
+ --ifm-menu-color: var(--ifm-color-emphasis-700);
+ --ifm-menu-color-active: var(--ifm-color-primary);
+ --ifm-menu-color-background-active: var(--ifm-hover-overlay);
+ --ifm-menu-color-background-hover: var(--ifm-hover-overlay);
+ --ifm-menu-link-padding-horizontal: 0.75rem;
+ --ifm-menu-link-padding-vertical: 0.375rem;
+ --ifm-menu-link-sublist-icon: url('data:image/svg+xml;utf8, ');
+ --ifm-menu-link-sublist-icon-filter: none;
+ --ifm-navbar-background-color: var(--ifm-background-surface-color);
+ --ifm-navbar-height: 3.75rem;
+ --ifm-navbar-item-padding-horizontal: 0.75rem;
+ --ifm-navbar-item-padding-vertical: 0.25rem;
+ --ifm-navbar-link-color: var(--ifm-font-color-base);
+ --ifm-navbar-link-hover-color: var(--ifm-color-primary);
+ --ifm-navbar-link-active-color: var(--ifm-link-color);
+ --ifm-navbar-padding-horizontal: var(--ifm-spacing-horizontal);
+ --ifm-navbar-padding-vertical: calc(var(--ifm-spacing-vertical) * 0.5);
+ --ifm-navbar-shadow: var(--ifm-global-shadow-lw);
+ --ifm-navbar-search-input-background-color: var(--ifm-color-emphasis-200);
+ --ifm-navbar-search-input-color: var(--ifm-color-emphasis-800);
+ --ifm-navbar-search-input-placeholder-color: var(--ifm-color-emphasis-500);
+ --ifm-navbar-search-input-icon: url('data:image/svg+xml;utf8, ');
+ --ifm-navbar-sidebar-width: 83vw;
+ --ifm-pagination-border-radius: var(--ifm-global-radius);
+ --ifm-pagination-color-active: var(--ifm-color-primary);
+ --ifm-pagination-font-size: 1rem;
+ --ifm-pagination-item-active-background: var(--ifm-hover-overlay);
+ --ifm-pagination-page-spacing: 0.2em;
+ --ifm-pagination-padding-horizontal: calc(var(--ifm-spacing-horizontal) * 1);
+ --ifm-pagination-padding-vertical: calc(var(--ifm-spacing-vertical) * 0.25);
+ --ifm-pagination-nav-border-radius: var(--ifm-global-radius);
+ --ifm-pagination-nav-color-hover: var(--ifm-color-primary);
+ --ifm-pills-color-active: var(--ifm-color-primary);
+ --ifm-pills-color-background-active: var(--ifm-hover-overlay);
+ --ifm-pills-spacing: 0.125rem;
+ --ifm-tabs-color: var(--ifm-font-color-secondary);
+ --ifm-tabs-color-active: var(--ifm-color-primary);
+ --ifm-tabs-color-active-border: var(--ifm-tabs-color-active);
+ --ifm-tabs-padding-horizontal: 1rem;
+ --ifm-tabs-padding-vertical: 1rem;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+* {
+ box-sizing: border-box;
+}
+
+html {
+ background-color: var(--ifm-background-color);
+ color: var(--ifm-font-color-base);
+ color-scheme: var(--ifm-color-scheme);
+ font: var(--ifm-font-size-base) / var(--ifm-line-height-base)
+ var(--ifm-font-family-base);
+ -webkit-font-smoothing: antialiased;
+ -webkit-tap-highlight-color: transparent;
+ text-rendering: optimizelegibility;
+ text-size-adjust: 100%;
+}
+
+body {
+ margin: 0;
+ word-wrap: break-word;
+}
+
+iframe {
+ border: 0;
+ color-scheme: auto;
+}
+
+/* Layout */
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.container {
+ margin: 0 auto;
+ max-width: var(--ifm-container-width);
+ padding: 0 var(--ifm-spacing-horizontal);
+ width: 100%;
+}
+
+.container--fluid {
+ max-width: inherit;
+ }
+
+.row {
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0 calc(var(--ifm-spacing-horizontal) * -1);
+}
+
+.row--no-gutters {
+ margin-left: 0;
+ margin-right: 0;
+ }
+
+.row--no-gutters > .col {
+ padding-left: 0;
+ padding-right: 0;
+ }
+
+.row--align-top {
+ align-items: flex-start;
+ }
+
+.row--align-bottom {
+ align-items: flex-end;
+ }
+
+.row--align-center {
+ align-items: center;
+ }
+
+.row--align-stretch {
+ align-items: stretch;
+ }
+
+.row--align-baseline {
+ align-items: baseline;
+ }
+
+.col {
+ --ifm-col-width: 100%;
+
+ flex: 1 0;
+ margin-left: 0;
+ max-width: var(--ifm-col-width);
+ padding: 0 var(--ifm-spacing-horizontal);
+ width: 100%;
+}
+
+.col[class*='col--'] {
+ flex: 0 0 var(--ifm-col-width);
+ }
+
+.col--1 {
+ --ifm-col-width: calc(1 / 12 * 100%);
+ }
+
+.col--offset-1 {
+ margin-left: calc(1 / 12 * 100%);
+ }
+
+.col--2 {
+ --ifm-col-width: calc(2 / 12 * 100%);
+ }
+
+.col--offset-2 {
+ margin-left: calc(2 / 12 * 100%);
+ }
+
+.col--3 {
+ --ifm-col-width: calc(3 / 12 * 100%);
+ }
+
+.col--offset-3 {
+ margin-left: calc(3 / 12 * 100%);
+ }
+
+.col--4 {
+ --ifm-col-width: calc(4 / 12 * 100%);
+ }
+
+.col--offset-4 {
+ margin-left: calc(4 / 12 * 100%);
+ }
+
+.col--5 {
+ --ifm-col-width: calc(5 / 12 * 100%);
+ }
+
+.col--offset-5 {
+ margin-left: calc(5 / 12 * 100%);
+ }
+
+.col--6 {
+ --ifm-col-width: calc(6 / 12 * 100%);
+ }
+
+.col--offset-6 {
+ margin-left: calc(6 / 12 * 100%);
+ }
+
+.col--7 {
+ --ifm-col-width: calc(7 / 12 * 100%);
+ }
+
+.col--offset-7 {
+ margin-left: calc(7 / 12 * 100%);
+ }
+
+.col--8 {
+ --ifm-col-width: calc(8 / 12 * 100%);
+ }
+
+.col--offset-8 {
+ margin-left: calc(8 / 12 * 100%);
+ }
+
+.col--9 {
+ --ifm-col-width: calc(9 / 12 * 100%);
+ }
+
+.col--offset-9 {
+ margin-left: calc(9 / 12 * 100%);
+ }
+
+.col--10 {
+ --ifm-col-width: calc(10 / 12 * 100%);
+ }
+
+.col--offset-10 {
+ margin-left: calc(10 / 12 * 100%);
+ }
+
+.col--11 {
+ --ifm-col-width: calc(11 / 12 * 100%);
+ }
+
+.col--offset-11 {
+ margin-left: calc(11 / 12 * 100%);
+ }
+
+.col--12 {
+ --ifm-col-width: calc(12 / 12 * 100%);
+ }
+
+.col--offset-12 {
+ margin-left: calc(12 / 12 * 100%);
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.margin--none {
+ margin: 0 !important;
+ }
+
+.margin-top--none {
+ margin-top: 0 !important;
+ }
+
+.margin-left--none {
+ margin-left: 0 !important;
+ }
+
+.margin-bottom--none {
+ margin-bottom: 0 !important;
+ }
+
+.margin-right--none {
+ margin-right: 0 !important;
+ }
+
+.margin-vert--none {
+ margin-bottom: 0 !important;
+ margin-top: 0 !important;
+ }
+
+.margin-horiz--none {
+ margin-left: 0 !important;
+ margin-right: 0 !important;
+ }
+
+.margin--xs {
+ margin: 0.25rem !important;
+ }
+
+.margin-top--xs {
+ margin-top: 0.25rem !important;
+ }
+
+.margin-left--xs {
+ margin-left: 0.25rem !important;
+ }
+
+.margin-bottom--xs {
+ margin-bottom: 0.25rem !important;
+ }
+
+.margin-right--xs {
+ margin-right: 0.25rem !important;
+ }
+
+.margin-vert--xs {
+ margin-bottom: 0.25rem !important;
+ margin-top: 0.25rem !important;
+ }
+
+.margin-horiz--xs {
+ margin-left: 0.25rem !important;
+ margin-right: 0.25rem !important;
+ }
+
+.margin--sm {
+ margin: 0.5rem !important;
+ }
+
+.margin-top--sm {
+ margin-top: 0.5rem !important;
+ }
+
+.margin-left--sm {
+ margin-left: 0.5rem !important;
+ }
+
+.margin-bottom--sm {
+ margin-bottom: 0.5rem !important;
+ }
+
+.margin-right--sm {
+ margin-right: 0.5rem !important;
+ }
+
+.margin-vert--sm {
+ margin-bottom: 0.5rem !important;
+ margin-top: 0.5rem !important;
+ }
+
+.margin-horiz--sm {
+ margin-left: 0.5rem !important;
+ margin-right: 0.5rem !important;
+ }
+
+.margin--md {
+ margin: 1rem !important;
+ }
+
+.margin-top--md {
+ margin-top: 1rem !important;
+ }
+
+.margin-left--md {
+ margin-left: 1rem !important;
+ }
+
+.margin-bottom--md {
+ margin-bottom: 1rem !important;
+ }
+
+.margin-right--md {
+ margin-right: 1rem !important;
+ }
+
+.margin-vert--md {
+ margin-bottom: 1rem !important;
+ margin-top: 1rem !important;
+ }
+
+.margin-horiz--md {
+ margin-left: 1rem !important;
+ margin-right: 1rem !important;
+ }
+
+.margin--lg {
+ margin: 2rem !important;
+ }
+
+.margin-top--lg {
+ margin-top: 2rem !important;
+ }
+
+.margin-left--lg {
+ margin-left: 2rem !important;
+ }
+
+.margin-bottom--lg {
+ margin-bottom: 2rem !important;
+ }
+
+.margin-right--lg {
+ margin-right: 2rem !important;
+ }
+
+.margin-vert--lg {
+ margin-bottom: 2rem !important;
+ margin-top: 2rem !important;
+ }
+
+.margin-horiz--lg {
+ margin-left: 2rem !important;
+ margin-right: 2rem !important;
+ }
+
+.margin--xl {
+ margin: 5rem !important;
+ }
+
+.margin-top--xl {
+ margin-top: 5rem !important;
+ }
+
+.margin-left--xl {
+ margin-left: 5rem !important;
+ }
+
+.margin-bottom--xl {
+ margin-bottom: 5rem !important;
+ }
+
+.margin-right--xl {
+ margin-right: 5rem !important;
+ }
+
+.margin-vert--xl {
+ margin-bottom: 5rem !important;
+ margin-top: 5rem !important;
+ }
+
+.margin-horiz--xl {
+ margin-left: 5rem !important;
+ margin-right: 5rem !important;
+ }
+
+.padding--none {
+ padding: 0 !important;
+ }
+
+.padding-top--none {
+ padding-top: 0 !important;
+ }
+
+.padding-left--none {
+ padding-left: 0 !important;
+ }
+
+.padding-bottom--none {
+ padding-bottom: 0 !important;
+ }
+
+.padding-right--none {
+ padding-right: 0 !important;
+ }
+
+.padding-vert--none {
+ padding-bottom: 0 !important;
+ padding-top: 0 !important;
+ }
+
+.padding-horiz--none {
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+ }
+
+.padding--xs {
+ padding: 0.25rem !important;
+ }
+
+.padding-top--xs {
+ padding-top: 0.25rem !important;
+ }
+
+.padding-left--xs {
+ padding-left: 0.25rem !important;
+ }
+
+.padding-bottom--xs {
+ padding-bottom: 0.25rem !important;
+ }
+
+.padding-right--xs {
+ padding-right: 0.25rem !important;
+ }
+
+.padding-vert--xs {
+ padding-bottom: 0.25rem !important;
+ padding-top: 0.25rem !important;
+ }
+
+.padding-horiz--xs {
+ padding-left: 0.25rem !important;
+ padding-right: 0.25rem !important;
+ }
+
+.padding--sm {
+ padding: 0.5rem !important;
+ }
+
+.padding-top--sm {
+ padding-top: 0.5rem !important;
+ }
+
+.padding-left--sm {
+ padding-left: 0.5rem !important;
+ }
+
+.padding-bottom--sm {
+ padding-bottom: 0.5rem !important;
+ }
+
+.padding-right--sm {
+ padding-right: 0.5rem !important;
+ }
+
+.padding-vert--sm {
+ padding-bottom: 0.5rem !important;
+ padding-top: 0.5rem !important;
+ }
+
+.padding-horiz--sm {
+ padding-left: 0.5rem !important;
+ padding-right: 0.5rem !important;
+ }
+
+.padding--md {
+ padding: 1rem !important;
+ }
+
+.padding-top--md {
+ padding-top: 1rem !important;
+ }
+
+.padding-left--md {
+ padding-left: 1rem !important;
+ }
+
+.padding-bottom--md {
+ padding-bottom: 1rem !important;
+ }
+
+.padding-right--md {
+ padding-right: 1rem !important;
+ }
+
+.padding-vert--md {
+ padding-bottom: 1rem !important;
+ padding-top: 1rem !important;
+ }
+
+.padding-horiz--md {
+ padding-left: 1rem !important;
+ padding-right: 1rem !important;
+ }
+
+.padding--lg {
+ padding: 2rem !important;
+ }
+
+.padding-top--lg {
+ padding-top: 2rem !important;
+ }
+
+.padding-left--lg {
+ padding-left: 2rem !important;
+ }
+
+.padding-bottom--lg {
+ padding-bottom: 2rem !important;
+ }
+
+.padding-right--lg {
+ padding-right: 2rem !important;
+ }
+
+.padding-vert--lg {
+ padding-bottom: 2rem !important;
+ padding-top: 2rem !important;
+ }
+
+.padding-horiz--lg {
+ padding-left: 2rem !important;
+ padding-right: 2rem !important;
+ }
+
+.padding--xl {
+ padding: 5rem !important;
+ }
+
+.padding-top--xl {
+ padding-top: 5rem !important;
+ }
+
+.padding-left--xl {
+ padding-left: 5rem !important;
+ }
+
+.padding-bottom--xl {
+ padding-bottom: 5rem !important;
+ }
+
+.padding-right--xl {
+ padding-right: 5rem !important;
+ }
+
+.padding-vert--xl {
+ padding-bottom: 5rem !important;
+ padding-top: 5rem !important;
+ }
+
+.padding-horiz--xl {
+ padding-left: 5rem !important;
+ padding-right: 5rem !important;
+ }
+
+/* Content */
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+code {
+ background-color: var(--ifm-code-background);
+ border: 0.1rem solid rgba(0, 0, 0, 0.1);
+ border-radius: var(--ifm-code-border-radius);
+ font-family: var(--ifm-font-family-monospace);
+ font-size: var(--ifm-code-font-size);
+ padding: var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal);
+ vertical-align: middle;
+}
+
+a code {
+ color: inherit;
+}
+
+pre {
+ background-color: var(--ifm-pre-background);
+ border-radius: var(--ifm-pre-border-radius);
+ color: var(--ifm-pre-color);
+ font: var(--ifm-code-font-size) / var(--ifm-pre-line-height)
+ var(--ifm-font-family-monospace);
+ margin: 0 0 var(--ifm-spacing-vertical);
+ overflow: auto;
+ padding: var(--ifm-pre-padding);
+}
+
+pre code {
+ background-color: transparent;
+ border: none;
+ font-size: 100%;
+ line-height: inherit;
+ padding: 0;
+ }
+
+kbd {
+ background-color: var(--ifm-color-emphasis-0);
+ border: 1px solid var(--ifm-color-emphasis-400);
+ border-radius: 0.2rem;
+ box-shadow: inset 0 -1px 0 var(--ifm-color-emphasis-400);
+ color: var(--ifm-color-emphasis-800);
+ font: 80% var(--ifm-font-family-monospace);
+ padding: 0.15rem 0.3rem;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ color: var(--ifm-heading-color);
+ font-family: var(--ifm-heading-font-family);
+ font-weight: var(--ifm-heading-font-weight);
+ line-height: var(--ifm-heading-line-height);
+ margin: var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0;
+}
+
+h1 {
+ font-size: var(--ifm-h1-font-size);
+ }
+
+h2 {
+ font-size: var(--ifm-h2-font-size);
+ }
+
+h3 {
+ font-size: var(--ifm-h3-font-size);
+ }
+
+h4 {
+ font-size: var(--ifm-h4-font-size);
+ }
+
+h5 {
+ font-size: var(--ifm-h5-font-size);
+ }
+
+h6 {
+ font-size: var(--ifm-h6-font-size);
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+img {
+ max-width: 100%;
+}
+
+img[align='right'] {
+ padding-left: var(--image-alignment-padding);
+}
+
+img[align='left'] {
+ padding-right: var(--image-alignment-padding);
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.markdown {
+ --ifm-h1-vertical-rhythm-top: 3;
+ --ifm-h2-vertical-rhythm-top: 2;
+ --ifm-h3-vertical-rhythm-top: 1.5;
+ --ifm-heading-vertical-rhythm-top: 1.25;
+
+ --ifm-h1-vertical-rhythm-bottom: 1.25;
+ --ifm-heading-vertical-rhythm-bottom: 1;
+}
+
+.markdown:before {
+ content: '';
+ display: table;
+ }
+
+.markdown:after {
+ clear: both;
+ content: '';
+ display: table;
+ }
+
+.markdown > *:last-child {
+ margin-bottom: 0 !important;
+ }
+
+.markdown h1:first-child {
+ --ifm-h1-font-size: 3rem;
+
+ margin-bottom: calc(
+ var(--ifm-h1-vertical-rhythm-bottom) * var(--ifm-leading)
+ );
+ }
+
+.markdown > h2 {
+ --ifm-h2-font-size: 2rem;
+
+ margin-bottom: calc(
+ var(--ifm-heading-vertical-rhythm-bottom) * var(--ifm-leading)
+ );
+ margin-top: calc(var(--ifm-h2-vertical-rhythm-top) * var(--ifm-leading));
+ }
+
+.markdown > h3 {
+ --ifm-h3-font-size: 1.5rem;
+
+ margin-bottom: calc(
+ var(--ifm-heading-vertical-rhythm-bottom) * var(--ifm-leading)
+ );
+ margin-top: calc(var(--ifm-h3-vertical-rhythm-top) * var(--ifm-leading));
+ }
+
+.markdown > h4,
+ .markdown > h5,
+ .markdown > h6 {
+ margin-bottom: calc(
+ var(--ifm-heading-vertical-rhythm-bottom) * var(--ifm-leading)
+ );
+ margin-top: calc(
+ var(--ifm-heading-vertical-rhythm-top) * var(--ifm-leading)
+ );
+ }
+
+/* Consistent spacing between content paragraphs. */
+
+.markdown > pre,
+ .markdown > ul,
+ .markdown > p {
+ margin-bottom: var(--ifm-leading);
+ }
+
+.markdown li {
+ word-wrap: break-word;
+ }
+
+.markdown li > p {
+ margin-top: var(--ifm-list-paragraph-margin);
+ }
+
+.markdown li + li {
+ margin-top: var(--ifm-list-item-margin);
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/* Lists */
+
+ul,
+ol {
+ margin: 0 0 var(--ifm-list-margin);
+ padding-left: var(--ifm-list-left-padding);
+}
+
+ol ol,
+ul ol {
+ list-style-type: lower-roman;
+}
+
+ul ul,
+ul ol,
+ol ol,
+ol ul {
+ margin: 0;
+}
+
+ul ul ol,
+ul ol ol,
+ol ul ol,
+ol ol ol {
+ list-style-type: lower-alpha;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+table {
+ border-collapse: collapse;
+ display: block;
+ margin-bottom: var(--ifm-spacing-vertical);
+ overflow: auto;
+}
+
+table thead tr {
+ border-bottom: 2px solid var(--ifm-table-border-color);
+ }
+
+table thead {
+ background-color: var(--ifm-table-stripe-background);
+ }
+
+table tr {
+ background-color: var(--ifm-table-background);
+ border-top: var(--ifm-table-border-width) solid
+ var(--ifm-table-border-color);
+ }
+
+table tr:nth-child(2n) {
+ background-color: var(--ifm-table-stripe-background);
+ }
+
+table th,
+ table td {
+ border: var(--ifm-table-border-width) solid var(--ifm-table-border-color);
+ padding: var(--ifm-table-cell-padding);
+ }
+
+table th {
+ background-color: var(--ifm-table-head-background);
+ color: var(--ifm-table-head-color);
+ font-weight: var(--ifm-table-head-font-weight);
+ }
+
+table td {
+ color: var(--ifm-table-cell-color);
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+strong {
+ font-weight: var(--ifm-font-weight-bold);
+}
+
+/* Links */
+
+a {
+ color: var(--ifm-link-color);
+ /* autoprefixer: ignore next */
+ text-decoration: var(--ifm-link-decoration);
+ transition: color var(--ifm-transition-fast) var(--ifm-transition-timing-default);
+}
+
+a:hover {
+ color: var(--ifm-link-hover-color);
+ /* autoprefixer: ignore next */
+ text-decoration: var(--ifm-link-hover-decoration);
+ }
+
+a:not([href]) {
+ text-decoration: none;
+ }
+
+/* Paragraphs */
+
+p {
+ margin: 0 0 var(--ifm-paragraph-margin-bottom);
+}
+
+/* Blockquotes */
+
+blockquote {
+ border-left: var(--ifm-blockquote-border-left-width) solid
+ var(--ifm-blockquote-border-color);
+ box-shadow: var(--ifm-blockquote-shadow);
+ color: var(--ifm-blockquote-color);
+ font-size: var(--ifm-blockquote-font-size);
+ margin: 0 0 var(--ifm-spacing-vertical);
+ padding: var(--ifm-blockquote-padding-vertical)
+ var(--ifm-blockquote-padding-horizontal);
+}
+
+blockquote > :first-child {
+ margin-top: 0;
+ }
+
+blockquote > :last-child {
+ margin-bottom: 0;
+ }
+
+/* Horizontal Rules */
+
+hr {
+ background-color: var(--ifm-hr-background-color);
+ border: 0;
+ height: var(--ifm-hr-height);
+ margin: var(--ifm-hr-margin-vertical) 0;
+}
+
+/* Utilities */
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.shadow--lw {
+ box-shadow: var(--ifm-global-shadow-lw) !important;
+ }
+
+.shadow--md {
+ box-shadow: var(--ifm-global-shadow-md) !important;
+ }
+
+.shadow--tl {
+ box-shadow: var(--ifm-global-shadow-tl) !important;
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.text--primary {
+ color: var(--ifm-color-primary);
+ }
+
+.text--secondary {
+ color: var(--ifm-color-secondary);
+ }
+
+.text--success {
+ color: var(--ifm-color-success);
+ }
+
+.text--info {
+ color: var(--ifm-color-info);
+ }
+
+.text--warning {
+ color: var(--ifm-color-warning);
+ }
+
+.text--danger {
+ color: var(--ifm-color-danger);
+ }
+
+.text--center {
+ text-align: center;
+ }
+
+.text--left {
+ text-align: left;
+ }
+
+.text--justify {
+ text-align: justify;
+ }
+
+.text--right {
+ text-align: right;
+ }
+
+.text--capitalize {
+ text-transform: capitalize;
+ }
+
+.text--lowercase {
+ text-transform: lowercase;
+ }
+
+.text--uppercase {
+ text-transform: uppercase;
+ }
+
+.text--light {
+ font-weight: var(--ifm-font-weight-light);
+ }
+
+.text--normal {
+ font-weight: var(--ifm-font-weight-normal);
+ }
+
+.text--semibold {
+ font-weight: var(--ifm-font-weight-semibold);
+ }
+
+.text--bold {
+ font-weight: var(--ifm-font-weight-bold);
+ }
+
+.text--italic {
+ font-style: italic;
+}
+
+.text--truncate {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.text--break {
+ word-wrap: break-word !important;
+ word-break: break-word !important;
+}
+
+.text--no-decoration,
+ .text--no-decoration:hover {
+ text-decoration: none;
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.clean-btn {
+ background: none;
+ border: none;
+ color: inherit;
+ cursor: pointer;
+ font-family: inherit;
+ padding: 0;
+}
+
+.clean-list {
+ list-style: none;
+ padding-left: 0;
+}
+
+/* Components */
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.alert--primary {
+ --ifm-alert-background-color: var(
+ --ifm-color-primary-contrast-background
+ );
+ --ifm-alert-background-color-highlight: rgba(53, 120, 229, 0.15);
+ --ifm-alert-foreground-color: var(
+ --ifm-color-primary-contrast-foreground
+ );
+ --ifm-alert-border-color: var(--ifm-color-primary-dark);
+ }
+
+.alert--secondary {
+ --ifm-alert-background-color: var(
+ --ifm-color-secondary-contrast-background
+ );
+ --ifm-alert-background-color-highlight: rgba(235, 237, 240, 0.15);
+ --ifm-alert-foreground-color: var(
+ --ifm-color-secondary-contrast-foreground
+ );
+ --ifm-alert-border-color: var(--ifm-color-secondary-dark);
+ }
+
+.alert--success {
+ --ifm-alert-background-color: var(
+ --ifm-color-success-contrast-background
+ );
+ --ifm-alert-background-color-highlight: rgba(0, 164, 0, 0.15);
+ --ifm-alert-foreground-color: var(
+ --ifm-color-success-contrast-foreground
+ );
+ --ifm-alert-border-color: var(--ifm-color-success-dark);
+ }
+
+.alert--info {
+ --ifm-alert-background-color: var(
+ --ifm-color-info-contrast-background
+ );
+ --ifm-alert-background-color-highlight: rgba(84, 199, 236, 0.15);
+ --ifm-alert-foreground-color: var(
+ --ifm-color-info-contrast-foreground
+ );
+ --ifm-alert-border-color: var(--ifm-color-info-dark);
+ }
+
+.alert--warning {
+ --ifm-alert-background-color: var(
+ --ifm-color-warning-contrast-background
+ );
+ --ifm-alert-background-color-highlight: rgba(255, 186, 0, 0.15);
+ --ifm-alert-foreground-color: var(
+ --ifm-color-warning-contrast-foreground
+ );
+ --ifm-alert-border-color: var(--ifm-color-warning-dark);
+ }
+
+.alert--danger {
+ --ifm-alert-background-color: var(
+ --ifm-color-danger-contrast-background
+ );
+ --ifm-alert-background-color-highlight: rgba(250, 56, 62, 0.15);
+ --ifm-alert-foreground-color: var(
+ --ifm-color-danger-contrast-foreground
+ );
+ --ifm-alert-border-color: var(--ifm-color-danger-dark);
+ }
+
+.alert {
+
+ --ifm-code-background: var(--ifm-alert-background-color-highlight);
+ --ifm-link-color: var(--ifm-alert-foreground-color);
+ --ifm-link-hover-color: var(--ifm-alert-foreground-color);
+ --ifm-link-decoration: underline;
+ --ifm-tabs-color: var(--ifm-alert-foreground-color);
+ --ifm-tabs-color-active: var(--ifm-alert-foreground-color);
+ --ifm-tabs-color-active-border: var(--ifm-alert-border-color);
+
+ background-color: var(--ifm-alert-background-color);
+ border: var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);
+ border-left-width: var(--ifm-alert-border-left-width);
+ border-radius: var(--ifm-alert-border-radius);
+ box-shadow: var(--ifm-alert-shadow);
+ color: var(--ifm-alert-foreground-color);
+ padding: var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal);
+}
+
+.alert__heading {
+ align-items: center;
+ display: flex;
+ font: bold var(--ifm-h5-font-size) / var(--ifm-heading-line-height)
+ var(--ifm-heading-font-family);
+ margin-bottom: 0.5rem;
+ text-transform: uppercase;
+ }
+
+.alert__icon {
+ display: inline-flex;
+ margin-right: 0.4em;
+ }
+
+.alert__icon svg {
+ fill: var(--ifm-alert-foreground-color);
+ stroke: var(--ifm-alert-foreground-color);
+ stroke-width: 0;
+ }
+
+.alert .close {
+ color: var(--ifm-alert-foreground-color);
+ margin: calc(var(--ifm-alert-padding-vertical) * -1)
+ calc(var(--ifm-alert-padding-horizontal) * -1) 0 0;
+
+ opacity: 0.75;
+ }
+
+.alert .close:hover,
+ .alert .close:focus {
+ opacity: 1;
+ }
+
+.alert a {
+ text-decoration-color: var(--ifm-alert-border-color);
+ }
+
+.alert a:hover {
+ text-decoration-thickness: 2px;
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.avatar {
+ column-gap: var(--ifm-avatar-intro-margin);
+ display: flex;
+}
+
+.avatar__photo {
+ border-radius: 50%;
+ display: block;
+ height: var(--ifm-avatar-photo-size);
+ overflow: hidden;
+ width: var(--ifm-avatar-photo-size);
+ }
+
+.avatar__photo--sm {
+ --ifm-avatar-photo-size: 2rem;
+ }
+
+.avatar__photo--lg {
+ --ifm-avatar-photo-size: 4rem;
+ }
+
+.avatar__photo--xl {
+ --ifm-avatar-photo-size: 6rem;
+ }
+
+.avatar__intro {
+ display: flex;
+ flex: 1 1;
+ flex-direction: column;
+ justify-content: center;
+ text-align: var(--ifm-avatar-intro-alignment);
+ }
+
+.avatar__name {
+ font: bold var(--ifm-h4-font-size) / var(--ifm-heading-line-height)
+ var(--ifm-font-family-base);
+ }
+
+.avatar__subtitle {
+ margin-top: 0.25rem;
+ }
+
+.avatar--vertical {
+ --ifm-avatar-intro-alignment: center;
+ --ifm-avatar-intro-margin: 0.5rem;
+
+ align-items: center;
+ flex-direction: column;
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.badge {
+ background-color: var(--ifm-badge-background-color);
+ border: var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);
+ border-radius: var(--ifm-badge-border-radius);
+ color: var(--ifm-badge-color);
+ display: inline-block;
+ font-size: 75%;
+ font-weight: var(--ifm-font-weight-bold);
+ line-height: 1;
+ padding: var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal);
+}
+
+.badge--primary {
+ --ifm-badge-background-color: var(--ifm-color-primary);
+ --ifm-badge-border-color: var(--ifm-badge-background-color);
+ }
+
+.badge--secondary {
+ --ifm-badge-background-color: var(--ifm-color-secondary);
+ --ifm-badge-border-color: var(--ifm-badge-background-color);
+ color: var(--ifm-color-black);
+ }
+
+.badge--success {
+ --ifm-badge-background-color: var(--ifm-color-success);
+ --ifm-badge-border-color: var(--ifm-badge-background-color);
+ }
+
+.badge--info {
+ --ifm-badge-background-color: var(--ifm-color-info);
+ --ifm-badge-border-color: var(--ifm-badge-background-color);
+ }
+
+.badge--warning {
+ --ifm-badge-background-color: var(--ifm-color-warning);
+ --ifm-badge-border-color: var(--ifm-badge-background-color);
+ }
+
+.badge--danger {
+ --ifm-badge-background-color: var(--ifm-color-danger);
+ --ifm-badge-border-color: var(--ifm-badge-background-color);
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.breadcrumbs {
+ margin-bottom: 0;
+ padding-left: 0;
+}
+
+.breadcrumbs__item {
+ display: inline-block;
+ }
+
+.breadcrumbs__item:not(:last-child):after {
+ background: var(--ifm-breadcrumb-separator) center;
+ content: ' ';
+ display: inline-block;
+ filter: var(--ifm-breadcrumb-separator-filter);
+ height: calc(
+ var(--ifm-breadcrumb-separator-size) *
+ var(--ifm-breadcrumb-size-multiplier) *
+ var(--ifm-breadcrumb-separator-size-multiplier)
+ );
+ margin: 0 var(--ifm-breadcrumb-spacing);
+ opacity: 0.5;
+ width: calc(
+ var(--ifm-breadcrumb-separator-size) *
+ var(--ifm-breadcrumb-size-multiplier) *
+ var(--ifm-breadcrumb-separator-size-multiplier)
+ );
+ /*rtl:raw:
+ transform: rotate(180deg);
+ */
+ }
+
+.breadcrumbs__item--active .breadcrumbs__link {
+ background: var(--ifm-breadcrumb-item-background-active);
+ color: var(--ifm-breadcrumb-color-active);
+ }
+
+.breadcrumbs__link {
+ border-radius: var(--ifm-breadcrumb-border-radius);
+ color: var(--ifm-font-color-base);
+ display: inline-block;
+ font-size: calc(1rem * var(--ifm-breadcrumb-size-multiplier));
+ padding: calc(
+ var(--ifm-breadcrumb-padding-vertical) *
+ var(--ifm-breadcrumb-size-multiplier)
+ )
+ calc(
+ var(--ifm-breadcrumb-padding-horizontal) *
+ var(--ifm-breadcrumb-size-multiplier)
+ );
+ transition-property: background, color;
+ transition-duration: var(--ifm-transition-fast);
+ transition-timing-function: var(--ifm-transition-timing-default);
+ }
+
+.breadcrumbs__link:link:hover, .breadcrumbs__link:visited:hover, area[href].breadcrumbs__link:hover {
+ background: var(--ifm-breadcrumb-item-background-active);
+ text-decoration: none;
+ }
+
+.breadcrumbs__link:any-link:hover {
+ background: var(--ifm-breadcrumb-item-background-active);
+ text-decoration: none;
+ }
+
+.breadcrumbs--sm {
+ --ifm-breadcrumb-size-multiplier: 0.8;
+ }
+
+.breadcrumbs--lg {
+ --ifm-breadcrumb-size-multiplier: 1.2;
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.button {
+ background-color: var(--ifm-button-background-color);
+ border: var(--ifm-button-border-width) solid var(--ifm-button-border-color);
+ border-radius: var(--ifm-button-border-radius);
+ color: var(--ifm-button-color);
+ cursor: pointer;
+ display: inline-block;
+ font-size: calc(0.875rem * var(--ifm-button-size-multiplier));
+ font-weight: var(--ifm-button-font-weight);
+ line-height: 1.5;
+ padding: calc(
+ var(--ifm-button-padding-vertical) * var(--ifm-button-size-multiplier)
+ )
+ calc(
+ var(--ifm-button-padding-horizontal) * var(--ifm-button-size-multiplier)
+ );
+ text-align: center;
+ -webkit-user-select: none;
+ user-select: none;
+ vertical-align: middle;
+ white-space: nowrap;
+ transition-property: color, background, border-color;
+ transition-duration: var(--ifm-button-transition-duration);
+ transition-timing-function: var(--ifm-transition-timing-default);
+}
+
+.button:hover {
+ color: var(--ifm-button-color); /* Override for button links. */
+ text-decoration: none;
+ }
+
+.button--outline {
+ --ifm-button-background-color: transparent;
+ --ifm-button-color: var(--ifm-button-border-color);
+ }
+
+.button--outline:hover {
+ --ifm-button-background-color: var(--ifm-button-border-color);
+ }
+
+.button--outline:hover,
+ .button--outline:active,
+ .button--outline.button--active {
+ --ifm-button-color: var(--ifm-font-color-base-inverse);
+ }
+
+.button--link {
+ --ifm-button-background-color: transparent;
+ --ifm-button-border-color: transparent;
+
+ color: var(--ifm-link-color);
+ /* autoprefixer: ignore next */
+ text-decoration: var(--ifm-link-decoration);
+ }
+
+.button--link:hover,
+ .button--link:active,
+ .button--link.button--active {
+ color: var(--ifm-link-hover-color);
+ /* autoprefixer: ignore next */
+ text-decoration: var(--ifm-link-hover-decoration);
+ }
+
+.button.disabled,
+ .button:disabled,
+ .button[disabled] {
+ opacity: 0.65;
+ pointer-events: none;
+ }
+
+.button--sm {
+ --ifm-button-size-multiplier: 0.8;
+ }
+
+.button--lg {
+ --ifm-button-size-multiplier: 1.35;
+ }
+
+.button--block {
+ display: block;
+ width: 100%;
+ }
+
+.button.button--secondary {
+ color: var(--ifm-color-gray-900);
+ }
+
+.button.button--secondary.button--outline:not(.button--active):not(:hover) {
+ color: var(--ifm-font-color-base);
+ }
+
+:where(.button--primary) {
+ --ifm-button-background-color: var(--ifm-color-primary);
+ --ifm-button-border-color: var(--ifm-color-primary);
+ }
+
+:where(.button--primary):not(.button--outline):hover {
+ --ifm-button-background-color: var(--ifm-color-primary-dark);
+ --ifm-button-border-color: var(--ifm-color-primary-dark);
+ }
+
+.button--primary:active,
+ .button--primary.button--active {
+ --ifm-button-background-color: var(--ifm-color-primary-darker);
+ --ifm-button-border-color: var(--ifm-color-primary-darker);
+ }
+
+:where(.button--secondary) {
+ --ifm-button-background-color: var(--ifm-color-secondary);
+ --ifm-button-border-color: var(--ifm-color-secondary);
+ }
+
+:where(.button--secondary):not(.button--outline):hover {
+ --ifm-button-background-color: var(--ifm-color-secondary-dark);
+ --ifm-button-border-color: var(--ifm-color-secondary-dark);
+ }
+
+.button--secondary:active,
+ .button--secondary.button--active {
+ --ifm-button-background-color: var(--ifm-color-secondary-darker);
+ --ifm-button-border-color: var(--ifm-color-secondary-darker);
+ }
+
+:where(.button--success) {
+ --ifm-button-background-color: var(--ifm-color-success);
+ --ifm-button-border-color: var(--ifm-color-success);
+ }
+
+:where(.button--success):not(.button--outline):hover {
+ --ifm-button-background-color: var(--ifm-color-success-dark);
+ --ifm-button-border-color: var(--ifm-color-success-dark);
+ }
+
+.button--success:active,
+ .button--success.button--active {
+ --ifm-button-background-color: var(--ifm-color-success-darker);
+ --ifm-button-border-color: var(--ifm-color-success-darker);
+ }
+
+:where(.button--info) {
+ --ifm-button-background-color: var(--ifm-color-info);
+ --ifm-button-border-color: var(--ifm-color-info);
+ }
+
+:where(.button--info):not(.button--outline):hover {
+ --ifm-button-background-color: var(--ifm-color-info-dark);
+ --ifm-button-border-color: var(--ifm-color-info-dark);
+ }
+
+.button--info:active,
+ .button--info.button--active {
+ --ifm-button-background-color: var(--ifm-color-info-darker);
+ --ifm-button-border-color: var(--ifm-color-info-darker);
+ }
+
+:where(.button--warning) {
+ --ifm-button-background-color: var(--ifm-color-warning);
+ --ifm-button-border-color: var(--ifm-color-warning);
+ }
+
+:where(.button--warning):not(.button--outline):hover {
+ --ifm-button-background-color: var(--ifm-color-warning-dark);
+ --ifm-button-border-color: var(--ifm-color-warning-dark);
+ }
+
+.button--warning:active,
+ .button--warning.button--active {
+ --ifm-button-background-color: var(--ifm-color-warning-darker);
+ --ifm-button-border-color: var(--ifm-color-warning-darker);
+ }
+
+:where(.button--danger) {
+ --ifm-button-background-color: var(--ifm-color-danger);
+ --ifm-button-border-color: var(--ifm-color-danger);
+ }
+
+:where(.button--danger):not(.button--outline):hover {
+ --ifm-button-background-color: var(--ifm-color-danger-dark);
+ --ifm-button-border-color: var(--ifm-color-danger-dark);
+ }
+
+.button--danger:active,
+ .button--danger.button--active {
+ --ifm-button-background-color: var(--ifm-color-danger-darker);
+ --ifm-button-border-color: var(--ifm-color-danger-darker);
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.button-group {
+ display: inline-flex;
+ gap: var(--ifm-button-group-spacing);
+}
+
+.button-group > .button:not(:first-child) {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+ }
+
+.button-group > .button:not(:last-child) {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+ }
+
+.button-group--block {
+ display: flex;
+ justify-content: stretch;
+ }
+
+.button-group--block > .button {
+ flex-grow: 1;
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.card {
+ background-color: var(--ifm-card-background-color);
+ border-radius: var(--ifm-card-border-radius);
+ box-shadow: var(--ifm-global-shadow-lw);
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+}
+
+/* Because of border-radius. */
+
+.card--full-height {
+ height: 100%;
+ }
+
+.card__image {
+ padding-top: var(--ifm-card-vertical-spacing);
+ }
+
+.card__image:first-child {
+ padding-top: 0;
+ }
+
+.card__header,
+ .card__body,
+ .card__footer {
+ padding: var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing);
+ }
+
+.card__header:not(:last-child), .card__body:not(:last-child), .card__footer:not(:last-child) {
+ padding-bottom: 0;
+ }
+
+.card__header > :last-child, .card__body > :last-child, .card__footer > :last-child {
+ margin-bottom: 0;
+ }
+
+.card__footer {
+ margin-top: auto; /* Pushes the footer to the bottom of the card. */
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.table-of-contents {
+ font-size: 0.8rem;
+ margin-bottom: 0;
+ padding: var(--ifm-toc-padding-vertical) 0;
+}
+
+.table-of-contents,
+ .table-of-contents ul {
+ list-style: none;
+ padding-left: var(--ifm-toc-padding-horizontal);
+ }
+
+.table-of-contents li {
+ margin: var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal);
+ }
+
+.table-of-contents__left-border {
+ border-left: 1px solid var(--ifm-toc-border-color);
+ }
+
+.table-of-contents__link {
+ color: var(--ifm-toc-link-color);
+ display: block;
+ }
+
+.table-of-contents__link:hover,
+ .table-of-contents__link:hover code,
+ .table-of-contents__link--active,
+ .table-of-contents__link--active code {
+ color: var(--ifm-color-primary);
+ text-decoration: none;
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.close {
+ color: var(--ifm-color-black);
+ float: right;
+ font-size: 1.5rem;
+ font-weight: var(--ifm-font-weight-bold);
+ line-height: 1;
+ opacity: 0.5;
+ padding: 1rem;
+ transition: opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default);
+}
+
+.close:hover {
+ opacity: 0.7;
+ }
+
+.close:focus {
+ opacity: 0.8;
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.dropdown {
+ display: inline-flex;
+ font-weight: var(--ifm-dropdown-font-weight);
+ position: relative;
+ vertical-align: top;
+}
+
+.dropdown--hoverable:hover .dropdown__menu, .dropdown--show .dropdown__menu {
+ opacity: 1;
+ pointer-events: all;
+ transform: translateY(-1px);
+ visibility: visible;
+ }
+
+.dropdown--right .dropdown__menu {
+ left: inherit;
+ right: 0;
+ }
+
+.dropdown--nocaret .navbar__link:after {
+ content: none !important;
+ }
+
+.dropdown__menu {
+ background-color: var(--ifm-dropdown-background-color);
+ border-radius: var(--ifm-global-radius);
+ box-shadow: var(--ifm-global-shadow-md);
+ left: 0;
+ list-style: none;
+ max-height: 80vh;
+ min-width: 10rem;
+ opacity: 0;
+ overflow-y: auto;
+ padding: 0.5rem;
+ pointer-events: none;
+ position: absolute;
+ top: calc(100% - var(--ifm-navbar-item-padding-vertical) + 0.3rem);
+ transform: translateY(-0.625rem);
+ visibility: hidden;
+ z-index: var(--ifm-z-index-dropdown);
+ transition-property: opacity, transform, visibility;
+ transition-duration: var(--ifm-transition-fast);
+ transition-timing-function: var(--ifm-transition-timing-default);
+ }
+
+.dropdown__link {
+ border-radius: 0.25rem;
+ color: var(--ifm-dropdown-link-color);
+ display: block;
+ font-size: 0.875rem;
+ margin-top: 0.2rem;
+ padding: 0.25rem 0.5rem;
+ white-space: nowrap;
+ }
+
+.dropdown__link:hover,
+ .dropdown__link--active {
+ background-color: var(--ifm-dropdown-hover-background-color);
+ color: var(--ifm-dropdown-link-color);
+ text-decoration: none;
+ }
+
+.dropdown__link--active,
+ .dropdown__link--active:hover {
+ --ifm-dropdown-link-color: var(--ifm-link-color);
+ }
+
+.dropdown > .navbar__link:after {
+ border-color: currentColor transparent;
+ border-style: solid;
+ border-width: 0.4em 0.4em 0;
+ content: '';
+ display: inline-block;
+ margin-left: 0.3em;
+ position: relative;
+ top: 2px;
+ transform: translateY(-50%);
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.footer {
+ background-color: var(--ifm-footer-background-color);
+ color: var(--ifm-footer-color);
+ padding: var(--ifm-footer-padding-vertical)
+ var(--ifm-footer-padding-horizontal);
+}
+
+.footer--dark {
+ --ifm-footer-background-color: #303846;
+ --ifm-footer-color: var(--ifm-footer-link-color);
+ --ifm-footer-link-color: var(--ifm-color-secondary);
+ --ifm-footer-title-color: var(--ifm-color-white);
+ }
+
+.footer__links {
+ margin-bottom: 1rem;
+ }
+
+.footer__link-item {
+ color: var(--ifm-footer-link-color);
+ line-height: 2;
+ }
+
+.footer__link-item:hover {
+ color: var(--ifm-footer-link-hover-color);
+ }
+
+.footer__link-separator {
+ margin: 0 var(--ifm-footer-link-horizontal-spacing);
+ }
+
+.footer__logo {
+ margin-top: 1rem;
+ max-width: var(--ifm-footer-logo-max-width);
+ }
+
+.footer__title {
+ color: var(--ifm-footer-title-color);
+ font: bold var(--ifm-h4-font-size) / var(--ifm-heading-line-height)
+ var(--ifm-font-family-base);
+ margin-bottom: var(--ifm-heading-margin-bottom);
+ }
+
+.footer__item {
+ margin-top: 0;
+ }
+
+.footer__items {
+ margin-bottom: 0;
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+[type='checkbox'] {
+ padding: 0;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.hero {
+ align-items: center;
+ background-color: var(--ifm-hero-background-color);
+ color: var(--ifm-hero-text-color);
+ display: flex;
+ padding: 4rem 2rem;
+}
+
+.hero--primary {
+ --ifm-hero-background-color: var(--ifm-color-primary);
+ --ifm-hero-text-color: var(--ifm-font-color-base-inverse);
+ }
+
+.hero--dark {
+ --ifm-hero-background-color: #303846;
+ --ifm-hero-text-color: var(--ifm-color-white);
+ }
+
+.hero__title {
+ font-size: 3rem;
+ }
+
+.hero__subtitle {
+ font-size: 1.5rem;
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.menu {
+ font-weight: var(--ifm-font-weight-semibold);
+ overflow-x: hidden;
+}
+
+.menu__list {
+ list-style: none;
+ margin: 0;
+ padding-left: 0;
+ }
+
+/* Non-top level menus */
+
+.menu__list .menu__list {
+ flex: 0 0 100%;
+ margin-top: 0.25rem;
+ padding-left: var(--ifm-menu-link-padding-horizontal);
+ }
+
+.menu__list-item:not(:first-child) {
+ margin-top: 0.25rem;
+ }
+
+.menu__list-item--collapsed .menu__list {
+ height: 0;
+ overflow: hidden;
+ }
+
+.menu__list-item--collapsed .menu__link--sublist:after,
+ .menu__list-item--collapsed .menu__caret:before {
+ transform: rotateZ(90deg);
+ }
+
+.menu__list-item-collapsible {
+ flex-wrap: wrap;
+ position: relative;
+ border-radius: 0.25rem;
+ display: flex;
+ transition: background var(--ifm-transition-fast) var(--ifm-transition-timing-default);
+ }
+
+.menu__list-item-collapsible:hover {
+ background: var(--ifm-menu-color-background-hover);
+ }
+
+.menu__list-item-collapsible--active {
+ background: var(--ifm-menu-color-background-hover);
+ }
+
+.menu__list-item-collapsible .menu__link:hover,
+ .menu__list-item-collapsible .menu__link--active {
+ background: none !important;
+ }
+
+.menu__link,
+ .menu__caret {
+ align-items: center;
+ border-radius: 0.25rem;
+ display: flex;
+ transition: background var(--ifm-transition-fast) var(--ifm-transition-timing-default);
+ }
+
+.menu__link:hover, .menu__caret:hover {
+ background: var(--ifm-menu-color-background-hover);
+ }
+
+.menu__link {
+ color: var(--ifm-menu-color);
+ flex: 1;
+ line-height: 1.25;
+ padding: var(--ifm-menu-link-padding-vertical)
+ var(--ifm-menu-link-padding-horizontal);
+ }
+
+.menu__link:hover {
+ text-decoration: none;
+ color: var(--ifm-menu-color);
+ transition: color var(--ifm-transition-fast) var(--ifm-transition-timing-default);
+ }
+
+.menu__link--sublist-caret:after {
+ content: '';
+ margin-left: auto;
+ min-width: 1.25rem;
+ background: var(--ifm-menu-link-sublist-icon) 50% / 2rem 2rem;
+ filter: var(--ifm-menu-link-sublist-icon-filter);
+ height: 1.25rem;
+ transform: rotate(180deg);
+ width: 1.25rem;
+ transition: transform var(--ifm-transition-fast) linear;
+ }
+
+.menu__link--active {
+ color: var(--ifm-menu-color-active);
+ }
+
+.menu__link--active:hover {
+ color: var(--ifm-menu-color-active);
+ }
+
+.menu__link--active:not(.menu__link--sublist) {
+ background-color: var(--ifm-menu-color-background-active);
+ }
+
+.menu__caret {
+ padding: var(--ifm-menu-link-padding-vertical)
+ var(--ifm-menu-link-padding-horizontal);
+ }
+
+.menu__caret:before {
+ content: '';
+ background: var(--ifm-menu-link-sublist-icon) 50% / 2rem 2rem;
+ filter: var(--ifm-menu-link-sublist-icon-filter);
+ height: 1.25rem;
+ transform: rotate(180deg);
+ width: 1.25rem;
+ transition: transform var(--ifm-transition-fast) linear;
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+html[data-theme='dark'],
+.navbar--dark {
+ --ifm-menu-link-sublist-icon-filter: invert(100%) sepia(94%) saturate(17%)
+ hue-rotate(223deg) brightness(104%) contrast(98%);
+}
+
+.navbar {
+ background-color: var(--ifm-navbar-background-color);
+ box-shadow: var(--ifm-navbar-shadow);
+ display: flex;
+ height: var(--ifm-navbar-height);
+ padding: var(--ifm-navbar-padding-vertical)
+ var(--ifm-navbar-padding-horizontal);
+}
+
+.navbar > .container,
+ .navbar > .container-fluid {
+ display: flex;
+ }
+
+.navbar--fixed-top {
+ position: sticky;
+ top: 0;
+ z-index: var(--ifm-z-index-fixed);
+ }
+
+.navbar__inner {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ width: 100%;
+ }
+
+.navbar__brand {
+ align-items: center;
+ color: var(--ifm-navbar-link-color);
+ display: flex;
+ margin-right: 1rem;
+ min-width: 0;
+ }
+
+.navbar__brand:hover {
+ color: var(--ifm-navbar-link-hover-color);
+ text-decoration: none;
+ }
+
+.navbar__title {
+ flex: 1 1 auto;
+ }
+
+.navbar__toggle {
+ display: none;
+ margin-right: 0.5rem;
+ }
+
+.navbar__logo {
+ flex: 0 0 auto;
+ height: 2rem;
+ margin-right: 0.5rem;
+ }
+
+.navbar__logo img {
+ height: 100%;
+ }
+
+.navbar__items {
+ align-items: center;
+ display: flex;
+ flex: 1;
+ min-width: 0;
+ }
+
+.navbar__items--center {
+ flex: 0 0 auto;
+ }
+
+.navbar__items--center .navbar__brand {
+ margin: 0;
+ }
+
+.navbar__items--center + .navbar__items--right {
+ flex: 1;
+ }
+
+.navbar__items--right {
+ flex: 0 0 auto;
+ justify-content: flex-end;
+ }
+
+.navbar__items--right > :last-child {
+ padding-right: 0;
+ }
+
+.navbar__item {
+ display: inline-block;
+ padding: var(--ifm-navbar-item-padding-vertical)
+ var(--ifm-navbar-item-padding-horizontal);
+ }
+
+.navbar__item.dropdown .navbar__link:not([href]) {
+ pointer-events: none;
+ }
+
+.navbar__link {
+ color: var(--ifm-navbar-link-color);
+ font-weight: var(--ifm-font-weight-semibold);
+ }
+
+.navbar__link:hover,
+ .navbar__link--active {
+ color: var(--ifm-navbar-link-hover-color);
+ text-decoration: none;
+ }
+
+.navbar--dark,
+ .navbar--primary {
+ --ifm-menu-color: var(--ifm-color-gray-300);
+ --ifm-navbar-link-color: var(--ifm-color-gray-100);
+ --ifm-navbar-search-input-background-color: rgba(255, 255, 255, 0.1);
+ --ifm-navbar-search-input-placeholder-color: rgba(255, 255, 255, 0.5);
+
+ color: var(--ifm-color-white);
+ }
+
+.navbar--dark {
+ --ifm-navbar-background-color: #242526;
+ --ifm-navbar-link-hover-color: var(--ifm-color-primary);
+ --ifm-menu-color-background-active: rgba(255, 255, 255, 0.05);
+ --ifm-navbar-search-input-color: var(--ifm-color-white);
+ }
+
+.navbar--primary {
+ --ifm-navbar-background-color: var(--ifm-color-primary);
+ --ifm-navbar-link-hover-color: var(--ifm-color-white);
+ --ifm-menu-color-active: var(--ifm-color-white);
+ --ifm-navbar-search-input-color: var(--ifm-color-emphasis-500);
+ }
+
+.navbar__search-input {
+ appearance: none; /* Algolia will add type="search" to the input in Safari and Safari's styling will override the styling here. */
+ background: var(--ifm-navbar-search-input-background-color)
+ var(--ifm-navbar-search-input-icon) no-repeat 0.75rem center / 1rem 1rem;
+ border: none;
+ border-radius: 2rem;
+ color: var(--ifm-navbar-search-input-color);
+ cursor: text;
+ display: inline-block;
+ font-size: 0.9rem;
+ height: 2rem;
+ padding: 0 0.5rem 0 2.25rem;
+ width: 12.5rem;
+ }
+
+.navbar__search-input::placeholder {
+ color: var(--ifm-navbar-search-input-placeholder-color);
+ }
+
+.navbar-sidebar {
+ background-color: var(--ifm-navbar-background-color);
+ bottom: 0;
+ box-shadow: var(--ifm-global-shadow-md);
+ left: 0;
+ opacity: 0;
+ overflow-x: hidden;
+ position: fixed;
+ top: 0;
+ transform: translate3d(-100%, 0, 0);
+ visibility: hidden;
+ width: var(--ifm-navbar-sidebar-width);
+ transition-property: opacity, visibility, transform;
+ transition-duration: var(--ifm-transition-fast);
+ transition-timing-function: ease-in-out;
+ }
+
+.navbar-sidebar--show .navbar-sidebar,
+ .navbar-sidebar--show .navbar-sidebar__backdrop {
+ opacity: 1;
+ visibility: visible;
+ }
+
+.navbar-sidebar--show .navbar-sidebar {
+ transform: translate3d(0, 0, 0);
+ }
+
+.navbar-sidebar__backdrop {
+ background-color: rgba(0, 0, 0, 0.6);
+ bottom: 0;
+ left: 0;
+ opacity: 0;
+ position: fixed;
+ right: 0;
+ top: 0;
+ visibility: hidden;
+ transition-property: opacity, visibility;
+ transition-duration: var(--ifm-transition-fast);
+ transition-timing-function: ease-in-out;
+ }
+
+.navbar-sidebar__brand {
+ align-items: center;
+ box-shadow: var(--ifm-navbar-shadow);
+ display: flex;
+ flex: 1;
+ height: var(--ifm-navbar-height);
+ padding: var(--ifm-navbar-padding-vertical)
+ var(--ifm-navbar-padding-horizontal);
+ }
+
+.navbar-sidebar__items {
+ display: flex;
+ height: calc(100% - var(--ifm-navbar-height));
+ transform: translateZ(0);
+ transition: transform var(--ifm-transition-fast) ease-in-out;
+ }
+
+.navbar-sidebar__items--show-secondary {
+ transform: translate3d(
+ calc((var(--ifm-navbar-sidebar-width)) * -1),
+ 0,
+ 0
+ );
+ }
+
+.navbar-sidebar__item {
+ flex-shrink: 0;
+ padding: 0.5rem;
+ width: calc(var(--ifm-navbar-sidebar-width));
+ }
+
+.navbar-sidebar__back {
+ background: var(--ifm-menu-color-background-active);
+ font-size: 15px;
+ font-weight: var(--ifm-button-font-weight);
+ margin: 0 0 0.2rem -0.5rem;
+ padding: 0.6rem 1.5rem;
+ position: relative;
+ text-align: left;
+ top: -0.5rem;
+ width: calc(100% + 1rem);
+ }
+
+.navbar-sidebar__close {
+ display: flex;
+ margin-left: auto;
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.pagination {
+ column-gap: var(--ifm-pagination-page-spacing);
+ display: flex;
+ font-size: var(--ifm-pagination-font-size);
+ padding-left: 0;
+}
+
+.pagination--sm {
+ --ifm-pagination-font-size: 0.8rem;
+ --ifm-pagination-padding-horizontal: 0.8rem;
+ --ifm-pagination-padding-vertical: 0.2rem;
+ }
+
+.pagination--lg {
+ --ifm-pagination-font-size: 1.2rem;
+ --ifm-pagination-padding-horizontal: 1.2rem;
+ --ifm-pagination-padding-vertical: 0.3rem;
+ }
+
+.pagination__item {
+ display: inline-flex;
+ }
+
+.pagination__item > span {
+ padding: var(--ifm-pagination-padding-vertical);
+ }
+
+.pagination__item--active .pagination__link {
+ background: var(--ifm-pagination-item-active-background);
+ color: var(--ifm-pagination-color-active);
+ }
+
+.pagination__item:not(.pagination__item--active):hover .pagination__link {
+ background: var(--ifm-pagination-item-active-background);
+ }
+
+.pagination__item--disabled,
+ .pagination__item[disabled] {
+ opacity: 0.25;
+ pointer-events: none;
+ }
+
+.pagination__link {
+ border-radius: var(--ifm-pagination-border-radius);
+ color: var(--ifm-font-color-base);
+ display: inline-block;
+ padding: var(--ifm-pagination-padding-vertical)
+ var(--ifm-pagination-padding-horizontal);
+ transition: background var(--ifm-transition-fast) var(--ifm-transition-timing-default);
+ }
+
+.pagination__link:hover {
+ text-decoration: none;
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.pagination-nav {
+ display: grid;
+ grid-gap: var(--ifm-spacing-horizontal);
+ gap: var(--ifm-spacing-horizontal);
+ grid-template-columns: repeat(2, 1fr);
+}
+
+.pagination-nav__link {
+ border: 1px solid var(--ifm-color-emphasis-300);
+ border-radius: var(--ifm-pagination-nav-border-radius);
+ display: block;
+ height: 100%;
+ line-height: var(--ifm-heading-line-height);
+ padding: var(--ifm-global-spacing);
+ transition: border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default);
+ }
+
+.pagination-nav__link:hover {
+ border-color: var(--ifm-pagination-nav-color-hover);
+ text-decoration: none;
+ }
+
+.pagination-nav__link--next {
+ grid-column: 2/3;
+ text-align: right;
+ }
+
+.pagination-nav__label {
+ font-size: var(--ifm-h4-font-size);
+ font-weight: var(--ifm-heading-font-weight);
+ word-break: break-word;
+ }
+
+.pagination-nav__link--prev .pagination-nav__label::before {
+ content: '« ';
+ }
+
+.pagination-nav__link--next .pagination-nav__label::after {
+ content: ' »';
+ }
+
+.pagination-nav__sublabel {
+ color: var(--ifm-color-content-secondary);
+ font-size: var(--ifm-h5-font-size);
+ font-weight: var(--ifm-font-weight-semibold);
+ margin-bottom: 0.25rem;
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.pills {
+ display: flex;
+ gap: var(--ifm-pills-spacing);
+ padding-left: 0;
+}
+
+.pills__item {
+ border-radius: 0.5rem;
+ cursor: pointer;
+ display: inline-block;
+ font-weight: var(--ifm-font-weight-bold);
+ padding: 0.25rem 1rem;
+ transition: background var(--ifm-transition-fast) var(--ifm-transition-timing-default);
+ }
+
+.pills__item--active {
+ background: var(--ifm-pills-color-background-active);
+ color: var(--ifm-pills-color-active);
+ }
+
+.pills__item:not(.pills__item--active):hover {
+ background: var(--ifm-pills-color-background-active);
+ }
+
+.pills--block {
+ justify-content: stretch;
+ }
+
+.pills--block .pills__item {
+ flex-grow: 1;
+ text-align: center;
+ }
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.tabs {
+ color: var(--ifm-tabs-color);
+ display: flex;
+ font-weight: var(--ifm-font-weight-bold);
+ margin-bottom: 0;
+ overflow-x: auto;
+ padding-left: 0;
+}
+
+.tabs__item {
+ border-bottom: 3px solid transparent;
+ border-radius: var(--ifm-global-radius);
+ cursor: pointer;
+ display: inline-flex;
+ padding: var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);
+ transition: background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default);
+ }
+
+.tabs__item--active {
+ border-bottom-color: var(--ifm-tabs-color-active-border);
+ border-bottom-left-radius: 0;
+ border-bottom-right-radius: 0;
+ color: var(--ifm-tabs-color-active);
+ }
+
+.tabs__item:hover {
+ background-color: var(--ifm-hover-overlay);
+ }
+
+.tabs--block {
+ justify-content: stretch;
+ }
+
+.tabs--block .tabs__item {
+ flex-grow: 1;
+ justify-content: center;
+ }
+
+/* Mode */
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+html[data-theme='dark'] {
+ --ifm-color-scheme: dark;
+
+ --ifm-color-emphasis-0: var(--ifm-color-gray-1000);
+ --ifm-color-emphasis-100: var(--ifm-color-gray-900);
+ --ifm-color-emphasis-200: var(--ifm-color-gray-800);
+ --ifm-color-emphasis-300: var(--ifm-color-gray-700);
+ --ifm-color-emphasis-400: var(--ifm-color-gray-600);
+ --ifm-color-emphasis-500: var(--ifm-color-gray-500);
+ --ifm-color-emphasis-600: var(--ifm-color-gray-400);
+ --ifm-color-emphasis-700: var(--ifm-color-gray-300);
+ --ifm-color-emphasis-800: var(--ifm-color-gray-200);
+ --ifm-color-emphasis-900: var(--ifm-color-gray-100);
+ --ifm-color-emphasis-1000: var(--ifm-color-gray-0);
+
+ --ifm-background-color: #1b1b1d;
+ --ifm-background-surface-color: #242526;
+
+ --ifm-hover-overlay: rgba(255, 255, 255, 0.05);
+
+ --ifm-color-content: #e3e3e3;
+ --ifm-color-content-secondary: rgba(255, 255, 255, 1);
+
+ --ifm-breadcrumb-separator-filter: invert(64%) sepia(11%) saturate(0%)
+ hue-rotate(149deg) brightness(99%) contrast(95%);
+
+ --ifm-code-background: rgba(255, 255, 255, 0.1);
+
+ --ifm-scrollbar-track-background-color: #444444;
+ --ifm-scrollbar-thumb-background-color: #686868;
+ --ifm-scrollbar-thumb-hover-background-color: #7a7a7a;
+
+ --ifm-table-stripe-background: rgba(255, 255, 255, 0.07);
+
+ --ifm-toc-border-color: var(--ifm-color-emphasis-200);
+ --ifm-color-primary-contrast-background: rgb(16, 36, 69);
+ --ifm-color-primary-contrast-foreground: rgb(235, 242, 252);
+ --ifm-color-secondary-contrast-background: rgb(71, 71, 72);
+ --ifm-color-secondary-contrast-foreground: rgb(253, 253, 254);
+ --ifm-color-success-contrast-background: rgb(0, 49, 0);
+ --ifm-color-success-contrast-foreground: rgb(230, 246, 230);
+ --ifm-color-info-contrast-background: rgb(25, 60, 71);
+ --ifm-color-info-contrast-foreground: rgb(238, 249, 253);
+ --ifm-color-warning-contrast-background: rgb(77, 56, 0);
+ --ifm-color-warning-contrast-foreground: rgb(255, 248, 230);
+ --ifm-color-danger-contrast-background: rgb(75, 17, 19);
+ --ifm-color-danger-contrast-foreground: rgb(255, 235, 236)
+}
+
+@media (min-width: 1440px) {
+ .container {
+ max-width: var(--ifm-container-width-xl);
+ }
+}
+
+@media (max-width: 996px) {
+ .col {
+ --ifm-col-width: 100%;
+ flex-basis: var(--ifm-col-width);
+ margin-left: 0;
+ }
+
+.footer {
+ --ifm-footer-padding-horizontal: 0
+}
+
+ .footer__link-separator {
+ display: none;
+ }
+
+ .footer__col {
+ margin-bottom: calc(var(--ifm-spacing-vertical) * 3);
+ }
+
+ .footer__link-item {
+ display: block;
+ }
+
+.hero {
+ padding-left: 0;
+ padding-right: 0
+}
+
+.navbar > .container,
+ .navbar > .container-fluid {
+ padding: 0
+ }
+
+.navbar__toggle {
+ display: inherit
+ }
+
+.navbar__item {
+ display: none
+ }
+
+.navbar__search-input {
+ width: 9rem
+ }
+
+.pills--block {
+ flex-direction: column
+ }
+
+.tabs--block {
+ flex-direction: column
+ }
+}
+
+@media (max-width: 576px) {
+ .markdown h1:first-child {
+ --ifm-h1-font-size: 2rem;
+ }
+ .markdown > h2 {
+ --ifm-h2-font-size: 1.5rem;
+ }
+ .markdown > h3 {
+ --ifm-h3-font-size: 1.25rem;
+ }
+}
+
+@media (pointer: fine) {
+ .thin-scrollbar {
+ scrollbar-width: thin;
+ }
+ .thin-scrollbar::-webkit-scrollbar {
+ height: var(--ifm-scrollbar-size);
+ width: var(--ifm-scrollbar-size);
+ }
+ .thin-scrollbar::-webkit-scrollbar-track {
+ background: var(--ifm-scrollbar-track-background-color);
+ border-radius: 10px;
+ }
+ .thin-scrollbar::-webkit-scrollbar-thumb {
+ background: var(--ifm-scrollbar-thumb-background-color);
+ border-radius: 10px;
+ }
+ .thin-scrollbar::-webkit-scrollbar-thumb:hover {
+ background: var(--ifm-scrollbar-thumb-hover-background-color);
+ }
+}
+
+@media (prefers-reduced-motion: reduce) {
+ :root {
+ --ifm-transition-fast: 0ms;
+ --ifm-transition-slow: 0ms;
+ }
+}
+
+@media print {
+
+.table-of-contents {
+ display: none
+}
+
+.footer {
+ display: none
+}
+
+.menu {
+ display: none
+}
+
+.navbar {
+ display: none
+}
+
+.pagination-nav {
+ display: none
+}
+
+.tabs {
+ page-break-inside: avoid
+}
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * Styles for NProgress
+ * Copied over to remove unused styles for the spinner.
+ * https://github.com/rstacruz/nprogress/blob/master/nprogress.css
+ */
+
+:root {
+ --docusaurus-progress-bar-color: var(--ifm-color-primary);
+}
+
+#nprogress {
+ pointer-events: none;
+}
+
+#nprogress .bar {
+ background: var(--docusaurus-progress-bar-color);
+ position: fixed;
+ z-index: 1031;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 2px;
+}
+
+#nprogress .peg {
+ position: absolute;
+ right: 0;
+ width: 100px;
+ height: 100%;
+ box-shadow: 0 0 10px var(--docusaurus-progress-bar-color),
+ 0 0 5px var(--docusaurus-progress-bar-color);
+ opacity: 1;
+ transform: rotate(3deg) translate(0, -4px);
+}
+
+:root {
+ --ifm-color-orange-jupyter: #f37726;
+ --ifm-color-blue-jupyter: #1976d2;
+ --ifm-color-green-xtensor: #4ecb71;
+ --ifm-color-grey-condaforge: #7a7865;
+ --ifm-color-orange-light: #fef9ec;
+ --ifm-color-indigo-i1: rgb(79, 82, 255);
+ --ifm-color-primary-p0: #fffbd7;
+ --ifm-color-primary-p1: #f6f195;
+ --ifm-color-primary-p2: #1c1c16;
+ --ifm-text-color-on-primary-p1: #1e1c00;
+
+ --ifm-color-secondary-s1: #a0c9ff;
+ --ifm-color-secondary-s2: #002646;
+ --ifm-color-secondary-s3: #00497F;
+
+
+ --ifm-color-neutral-n1: #605e58;
+ --ifm-color-neutral-n2: #371300;
+
+ --ifm-text-color: var(--ifm-color-primary-p2);
+ --ifm-background-color: white;
+
+ /* footer */
+ --ifm-background-color-footer: var(--ifm-color-primary-p1);
+ --ifm-text-color-footer: black;
+
+ /*popup overlay*/
+ --ifm-background-color-popup-overlay: gray;
+
+ /* Font sizes */
+ --ifm-font-size-small: 14px;
+ --ifm-font-size-normal: 18px;
+ --ifm-font-size-medium: 24px;
+ --ifm-font-size-main-title: 48px;
+ --ifm-font-size-secondary-title: 32px;
+
+ /*Font families */
+ --ifm-font-family-roboto: "Roboto";
+ --ifm-font-family-roboto-flex: "Roboto Flex";
+ --ifm-font-family-bebas-neue: "Bebas Neue";
+ --ifm-font-family-rubik-one: "Rubik One";
+ --ifm-font-family-dosis: "Dosis";
+
+ /* Spacing for margins and paddings */
+ --ifm-spacing-none: 0px;
+ --ifm-spacing-2xs: 4px;
+ --ifm-spacing-xs: 8px;
+ --ifm-spacing-sm: 12px;
+ --ifm-spacing-md: 16px;
+ --ifm-spacing-lg: 24px;
+ --ifm-spacing-xl: 32px;
+ --ifm-spacing-2xl: 56px;
+ --ifm-spacing-3xl: 64px;
+ --ifm-spacing-4xl: 96px;
+ --ifm-spacing-5xl: 120px;
+ --ifm-spacing-6xl: 144px;
+ --ifm-spacing-7xl: 240px;
+ --ifm-spacing-8xl: 400px;
+
+ --ifm-navbar-item-padding-horizontal: 2px;
+}
+
+.flex-full-centered {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.flex-horizontally-centered {
+ display: flex;
+ justify-content: center;
+}
+
+.horizontally-centered {
+ justify-content: center;
+}
+
+.margin-none {
+ margin: 0;
+}
+
+.padding-none {
+ padding: 0;
+}
+
+.row-reverse {
+ flex-direction: column-reverse;
+}
+
+ul {
+ padding-left: 0;
+ margin-left: 0;
+}
+
+.container {
+ max-width: none;
+ padding: 0;
+}
+
+/***footer*****/
+.footer__item {
+ color: var(--ifm-text-color-footer);
+}
+
+.footer__copyright {
+ color: var(--ifm-text-color-footer);
+}
+
+.footer {
+ background-color: var(--ifm-background-color-footer);
+ color: var(--ifm-text-color-footer);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin: 0;
+ max-width: none;
+ padding: var(--ifm-spacing-xl) var(--ifm-spacing-2xl);
+}
+
+.footer__col {
+ align-items: center;
+ justify-content: center;
+ margin: 0;
+ padding: 0;
+ height: 240px;
+}
+
+.row.footer__links {
+ display: flex;
+ justify-content: center;
+ margin: 0;
+ padding: 0;
+ color: var(--ifm-text-color-footer);
+}
+
+.footer__title {
+ color: var(--ifm-text-color-footer);
+}
+
+.footer__bottom {
+ margin-top: var(--ifm-spacing-xl);
+}
+
+.footer__link-item {
+ color: var(--ifm-text-color-footer);
+}
+
+.footer-astronaut {
+ display: flex;
+ width: 35px;
+ height: 35px;
+ padding: 10px;
+}
+
+@media (min-width: 1440px) {
+ .container {
+ max-width: none;
+ }
+}
+
+/****** Class that are specific for smaller screens*/
+@media (max-width: 996px) {
+ .main-container-with-margins {
+ margin-left: 42px;
+ margin-right: 42px;
+ }
+
+ .upper-container-with-margin-top {
+ margin-top: var(--ifm-spacing-2xl);
+ }
+
+ .row-with-margin-top {
+ margin-top: var(--ifm-spacing-xl);
+ }
+
+ .row-with-margin-bottom {
+ margin-bottom: var(--ifm-spacing-xl);
+ }
+
+ .row-with-margins {
+ margin: var(--ifm-spacing-xl) 0;
+ }
+ .col {
+ padding: 0;
+ }
+
+ h1 {
+ color: var(--ifm-text-color-main-title);
+ font-family: var(--ifm-font-family-bebas-neue);
+ font-size: 32px;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 150%; /* 36px */
+ letter-spacing: 1.056px;
+ text-align: center;
+ padding: 0;
+ }
+
+ h2 {
+ font-family: var(--ifm-font-family-bebas-neue);
+ font-size: 24px;
+ font-style: normal;
+ font-weight: bolder;
+ line-height: 150%;
+ text-align: center;
+ }
+
+ p {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 14px;
+ font-style: normal;
+ line-height: 150%;
+ line-height: 20px;
+ letter-spacing: 0.25px;
+ padding: 0 var(--ifm-spacing-lg);
+ }
+
+ li {
+ font-size: 14px;
+ margin-left: 24px;
+ }
+
+ .blue-banner-container {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 16px;
+ font-weight: 500;
+ color: var(--ifm-color-secondary-s2);
+ padding: var(--ifm-spacing-2xl) var(--ifm-spacing-lg) 0
+ var(--ifm-spacing-lg);
+ background-color: var(--ifm-color-secondary-s1);
+ line-height: 20px;
+ letter-spacing: 0.1px;
+ text-align: center;
+ }
+
+ .blue-banner-header {
+ text-align: center;
+ font-family: var(--ifm-font-family-bebas-neue);
+ font-size: 32px;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 150%;
+ letter-spacing: 2.112px;
+ background-color: var(--ifm-color-secondary-s1);
+ color: var(--ifm-color-secondary-s2);
+ }
+
+ .link-to-button {
+ width: 258px;
+ height: 56px;
+ font-family: var(--ifm-font-family-roboto);
+ border-radius: 35px;
+ background: var(--ifm-color-secondary-s2);
+ color: white;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 150%;
+ letter-spacing: -0.176px;
+ padding: 16px 36px;
+ border: none;
+ text-align: center;
+ margin-top: var(--ifm-spacing-lg);
+ margin-bottom: var(--ifm-spacing-lg);
+ }
+
+ .link-box {
+ height: 59px;
+ width: auto;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+}
+
+/****** Class that are specific to larger screens*/
+@media (min-width: 996px) {
+ .main-container-with-margins {
+ margin-left: 96px;
+ margin-right: 96px;
+ display: flex;
+ justify-content: center;
+ }
+
+ .upper-container-with-margin-top {
+ margin-top: var(--ifm-spacing-6xl);
+ }
+
+ .row-with-margin-top {
+ margin-top: var(--ifm-spacing-2xl);
+ }
+
+ .row-with-margin-bottom {
+ margin-bottom: var(--ifm-spacing-2xl);
+ }
+
+ .row-with-margins {
+ margin: var(--ifm-spacing-2xl) 0;
+ }
+
+ h1 {
+ color: var(--ifm-color-primary-p2);
+ font-family: var(--ifm-font-family-bebas-neue);
+ font-size: var(--ifm-font-size-main-title);
+ font-style: normal;
+ font-weight: 800;
+ line-height: 150%;
+ letter-spacing: 2.112px;
+ text-align: start;
+ padding: 8px 36px 8px 20px;
+ }
+
+ h2 {
+ font-family: var(--ifm-font-family-bebas-neue);
+ font-size: var(--ifm-font-size-secondary-title);
+ font-style: normal;
+ font-weight: bolder;
+ line-height: 150%;
+ text-align: start;
+ }
+
+ p {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: var(--ifm-font-size-normal);
+ font-style: normal;
+ letter-spacing: 0.25px;
+ text-align: justify;
+ }
+
+ .blue-banner-container {
+ text-align: center;
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 28px;
+ font-style: normal;
+ font-weight: 500;
+ line-height: 150%;
+ background-color: var(--ifm-color-secondary-s1);
+ color: var(--ifm-color-secondary-s2);
+ padding: var(--ifm-spacing-2xl) var(--ifm-spacing-4xl) 0
+ var(--ifm-spacing-4xl);
+ }
+
+ .blue-banner-header {
+ text-align: center;
+ font-family: var(--ifm-font-family-bebas-neue);
+ font-size: 48px;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 150%;
+ letter-spacing: 2.112px;
+ background-color: var(--ifm-color-secondary-s1);
+ color: var(--ifm-color-secondary-s2);
+ margin-bottom: var(--ifm-spacing-2xl);
+ }
+
+ .link-to-button {
+ width: 258px;
+ height: 56px;
+ font-family: var(--ifm-font-family-roboto);
+ border-radius: 35px;
+ background: var(--ifm-color-secondary-s2);
+ color: white;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 150%;
+ letter-spacing: -0.176px;
+ padding: 16px 36px;
+ border: none;
+ text-align: center;
+ margin-top: var(--ifm-spacing-2xl);
+ margin-bottom: var(--ifm-spacing-2xl);
+ }
+
+ .link-box {
+ height: 59px;
+ width: auto;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+}
+/***********************************************************/
+
+.social-media-links {
+ margin-left: var(--ifm-spacing-3xl);
+ text-align: start;
+}
+
+.spacing-none {
+ height: var(--ifm-spacing-none);
+}
+
+.spacing-2xs {
+ height: var(--ifm-spacing-2xs);
+}
+
+.spacing-xs {
+ height: var(--ifm-spacing-xs);
+}
+
+.spacing-sm {
+ height: var(--ifm-spacing-sm);
+}
+
+.spacing-md {
+ height: var(--ifm-spacing-md);
+}
+
+.spacing-lg {
+ height: var(--ifm-spacing-lg);
+}
+
+.spacing-xl {
+ height: var(--ifm-spacing-xl);
+}
+
+.spacing-2xl {
+ height: var(--ifm-spacing-2xl);
+}
+
+.spacing-3xl {
+ height: var(--ifm-spacing-3xl);
+}
+
+.spacing-4xl {
+ height: var(--ifm-spacing-4xl);
+}
+
+.spacing-5xl {
+ height: var(--ifm-spacing-5xl);
+}
+
+.spacing-6xl {
+ height: var(--ifm-spacing-6xl);
+}
+
+.spacing-7xl {
+ height: var(--ifm-spacing-7xl);
+}
+
+.spacing-8xl {
+ height: var(--ifm-spacing-8xl);
+}
+
+.link-to-button {
+ width: 258px;
+ height: 56px;
+ font-family: var(--ifm-font-family-roboto);
+ border-radius: 35px;
+ background: var(--ifm-color-secondary-s2);
+ color: white;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 150%;
+ letter-spacing: -0.176px;
+ padding: 16px 36px;
+ border: none;
+ text-align: center;
+ margin-top: var(--ifm-spacing-2xl);
+ margin-bottom: var(--ifm-spacing-2xl);
+}
+
+.link-box {
+ height: 59px;
+ width: auto;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.social-media-links {
+ margin-left: var(--ifm-spacing-3xl);
+ text-align: start;
+}
+
+/*
+Hyperlink states are crucial for accessibility.
+Please double check before changing the rules below.
+*/
+a {
+ /*text-decoration: underline;
+ text-decoration-thickness: var(--pydata-link-underline-thickness);
+ text-underline-offset: var(--pydata-link-underline-offset);*/
+ color: var(---ifm-text-color);
+}
+
+a:hover,
+/* We need to (re)override some of the infima rules to have proper states on
+navbar links, table of contents, and docs sidebar links, respectively */
+a.navbar__link:hover, /* Top bar navigation links */
+a.table-of-contents__link:hover, /*Right sidebar links (table of contents) */
+a[class^="sidebarItemLink"]:hover /* The docs sidebar links do not have its own class */ {
+ /*text-decoration: underline;
+ text-decoration-thickness: var(--pydata-link-hover-decoration-thickness);
+ text-decoration-skip-ink: none;
+ text-decoration-skip: none;*/
+}
+a:active,
+a.navbar__link:active,
+a.table-of-contents__link:active,
+a[class^="sidebarItemLink"]:active {
+ text-decoration-thickness: var(--pydata-link-decoration-thickness);
+}
+
+/* In some cases, we override the underlines because there are other elements that
+already report the state (e.g. borders, background colors, etc) */
+a[class^="sidebarItemLink"][aria-current="page"], /* No underline if this is the current page */
+a.navbar__link,
+.navbar-sidebar__item,
+.menu a,
+.navbar__items--right a,
+.pagination-nav__link,
+a.card, /* These cards are used in index-like documentation pages */
+a.card:hover {
+ text-decoration: none;
+}
+
+/* On these elements, we only rely on background color changes. They are navigation items,
+so they are already assumed to be clickable anyway */
+.pagination-nav__link:active,
+a.card:active,
+a.menu__link:active {
+ background: white;
+ color: #000;
+}
+[data-theme="dark"] .pagination-nav__link:active,
+[data-theme="dark"] a.card:active,
+[data-theme="dark"] a.menu__link:active {
+ background: black;
+ color: #fff;
+}
+
+/* Animate the top navbar conda-forge logo a bit */
+.navbar__logo img:hover {
+ transform: scale(1.05);
+}
+
+.navbar__logo img:active {
+ transform: scale(1);
+}
+
+.contact {
+ background-color: var(--ifm-color-primary-p1);
+ color: var(--ifm-color-text-on-primary-p1);
+ border-radius: 4px;
+ font-weight: bolder;
+ font-style: normal;
+ margin: var(--ifm-navbar-item-padding-vertical) 20px;
+}
+
+.contact:hover {
+ background-color: white;
+}
+
+.fundable_projects {
+ background-color: var(--ifm-color-blue-jupyter);
+ color: white;
+ border-radius: 4px;
+ font-style: normal;
+ margin: var(--ifm-navbar-item-padding-vertical) 20px;
+}
+
+.fundable_projects:hover {
+ background-color: white;
+ color: var(--ifm-color-blue-jupyter)
+}
+
+
+.custom_navbar_item {
+ font-family: var(--ifm-font-family-roboto);
+ width: 117px;
+ height: 36px;
+ padding: 6px 14px;
+ text-align: center;
+}
+
+.custom_navbar_item:hover {
+ background-color: var(--ifm-color-primary-p1);
+ justify-items: center;
+ border-radius: 4px;
+}
+
+.navbar__link:hover {
+ color: black;
+}
+
+.astronaut-footer {
+ background: url(/assets/images/astronaut-footer-d83631ab3d4a61044a99085701366520.svg);
+ content: "";
+ display: flex;
+ height: 240px;
+ width: 240px;
+ background-repeat: no-repeat;
+}
+
+.github-icon:hover {
+ opacity: 0.6;
+}
+
+.github-icon:before {
+ background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzciIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCAzNyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgaWQ9IkdIIj4KPGNpcmNsZSBpZD0iRWxsaXBzZSAxIiBjeD0iMTguOTc5NSIgY3k9IjE4IiByPSIxNy41IiBmaWxsPSJ3aGl0ZSIgc3Ryb2tlPSJibGFjayIvPgo8cGF0aCBpZD0iVmVjdG9yIiBkPSJNMjUuMzM4NyAxNC4zMDY3QzI1LjU0MjQgMTMuNjQ5MyAyNS42MDc4IDEyLjk1NjkgMjUuNTMwNiAxMi4yNzMxQzI1LjQ1MzUgMTEuNTg5MiAyNS4yMzU1IDEwLjkyODcgMjQuODkwMyAxMC4zMzMzQzI0LjgzMTggMTAuMjMyIDI0Ljc0NzYgMTAuMTQ3OCAyNC42NDYyIDEwLjA4OTNDMjQuNTQ0OSAxMC4wMzA4IDI0LjQyOTkgOS45OTk5OCAyNC4zMTI4IDEwQzIzLjUzNjMgOS45OTgzOSAyMi43NzAyIDEwLjE3ODQgMjIuMDc1NyAxMC41MjU3QzIxLjM4MTEgMTAuODcyOSAyMC43Nzc0IDExLjM3NzggMjAuMzEyOCAxMkgxOC4zMTI4QzE3Ljg0ODIgMTEuMzc3OCAxNy4yNDQ1IDEwLjg3MjkgMTYuNTUgMTAuNTI1N0MxNS44NTU1IDEwLjE3ODQgMTUuMDg5MyA5Ljk5ODM5IDE0LjMxMjggMTBDMTQuMTk1OCA5Ljk5OTk4IDE0LjA4MDggMTAuMDMwOCAxMy45Nzk0IDEwLjA4OTNDMTMuODc4IDEwLjE0NzggMTMuNzkzOSAxMC4yMzIgMTMuNzM1MyAxMC4zMzMzQzEzLjM5MDIgMTAuOTI4NyAxMy4xNzIyIDExLjU4OTIgMTMuMDk1IDEyLjI3MzFDMTMuMDE3OSAxMi45NTY5IDEzLjA4MzIgMTMuNjQ5MyAxMy4yODcgMTQuMzA2N0MxMi44NzUxIDE1LjAyNTYgMTIuNjU0NSAxNS44MzgyIDEyLjY0NjIgMTYuNjY2N1YxNy4zMzMzQzEyLjY0NzYgMTguNDYxMyAxMy4wNTcxIDE5LjU1MDcgMTMuNzk5IDIwLjQwMDRDMTQuNTQxIDIxLjI1IDE1LjU2NTMgMjEuODAyNSAxNi42ODI4IDIxLjk1NThDMTYuMjI2NyAyMi41Mzk2IDE1Ljk3OTEgMjMuMjU5MiAxNS45Nzk1IDI0VjI0LjY2NjdIMTMuOTc5NUMxMy40NDkxIDI0LjY2NjcgMTIuOTQwNCAyNC40NTYgMTIuNTY1MyAyNC4wODA5QzEyLjE5MDIgMjMuNzA1OCAxMS45Nzk1IDIzLjE5NzEgMTEuOTc5NSAyMi42NjY3QzExLjk3OTUgMjIuMjI4OSAxMS44OTMzIDIxLjc5NTUgMTEuNzI1OCAyMS4zOTExQzExLjU1ODIgMjAuOTg2NiAxMS4zMTI3IDIwLjYxOTIgMTEuMDAzMiAyMC4zMDk2QzEwLjY5MzcgMjAuMDAwMSAxMC4zMjYyIDE5Ljc1NDYgOS45MjE3NyAxOS41ODcxQzkuNTE3MzUgMTkuNDE5NiA5LjA4MzkgMTkuMzMzMyA4LjY0NjE2IDE5LjMzMzNDOC40NjkzNSAxOS4zMzMzIDguMjk5NzggMTkuNDAzNiA4LjE3NDc1IDE5LjUyODZDOC4wNDk3MyAxOS42NTM2IDcuOTc5NDkgMTkuODIzMiA3Ljk3OTQ5IDIwQzcuOTc5NDkgMjAuMTc2OCA4LjA0OTczIDIwLjM0NjQgOC4xNzQ3NSAyMC40NzE0QzguMjk5NzggMjAuNTk2NCA4LjQ2OTM1IDIwLjY2NjcgOC42NDYxNiAyMC42NjY3QzkuMTc2NTkgMjAuNjY2NyA5LjY4NTMgMjAuODc3NCAxMC4wNjA0IDIxLjI1MjVDMTAuNDM1NCAyMS42Mjc1IDEwLjY0NjIgMjIuMTM2MiAxMC42NDYyIDIyLjY2NjdDMTAuNjQ2MiAyMy41NTA3IDEwLjk5NzMgMjQuMzk4NiAxMS42MjI1IDI1LjAyMzdDMTIuMjQ3NiAyNS42NDg4IDEzLjA5NTQgMjYgMTMuOTc5NSAyNkgxNS45Nzk1VjI3LjMzMzNDMTUuOTc5NSAyNy41MTAxIDE2LjA0OTcgMjcuNjc5NyAxNi4xNzQ4IDI3LjgwNDdDMTYuMjk5OCAyNy45Mjk4IDE2LjQ2OTMgMjggMTYuNjQ2MiAyOEMxNi44MjMgMjggMTYuOTkyNSAyNy45Mjk4IDE3LjExNzYgMjcuODA0N0MxNy4yNDI2IDI3LjY3OTcgMTcuMzEyOCAyNy41MTAxIDE3LjMxMjggMjcuMzMzM1YyNEMxNy4zMTI4IDIzLjQ2OTYgMTcuNTIzNSAyMi45NjA5IDE3Ljg5ODYgMjIuNTg1OEMxOC4yNzM3IDIyLjIxMDcgMTguNzgyNCAyMiAxOS4zMTI4IDIyQzE5Ljg0MzMgMjIgMjAuMzUyIDIyLjIxMDcgMjAuNzI3IDIyLjU4NThDMjEuMTAyMSAyMi45NjA5IDIxLjMxMjggMjMuNDY5NiAyMS4zMTI4IDI0VjI3LjMzMzNDMjEuMzEyOCAyNy41MTAxIDIxLjM4MzEgMjcuNjc5NyAyMS41MDgxIDI3LjgwNDdDMjEuNjMzMSAyNy45Mjk4IDIxLjgwMjcgMjggMjEuOTc5NSAyOEMyMi4xNTYzIDI4IDIyLjMyNTkgMjcuOTI5OCAyMi40NTA5IDI3LjgwNDdDMjIuNTc1OSAyNy42Nzk3IDIyLjY0NjIgMjcuNTEwMSAyMi42NDYyIDI3LjMzMzNWMjRDMjIuNjQ2NiAyMy4yNTkyIDIyLjM5OSAyMi41Mzk2IDIxLjk0MjggMjEuOTU1OEMyMy4wNjA0IDIxLjgwMjUgMjQuMDg0NyAyMS4yNSAyNC44MjY2IDIwLjQwMDRDMjUuNTY4NiAxOS41NTA3IDI1Ljk3ODEgMTguNDYxMyAyNS45Nzk1IDE3LjMzMzNWMTYuNjY2N0MyNS45NzEyIDE1LjgzODIgMjUuNzUwNiAxNS4wMjU2IDI1LjMzODcgMTQuMzA2N1pNMjQuNjQ2MiAxNy4zMzMzQzI0LjY0NjIgMTguMjE3NCAyNC4yOTUgMTkuMDY1MiAyMy42Njk4IDE5LjY5MDRDMjMuMDQ0NyAyMC4zMTU1IDIyLjE5NjkgMjAuNjY2NyAyMS4zMTI4IDIwLjY2NjdIMTcuMzEyOEMxNi40Mjg4IDIwLjY2NjcgMTUuNTgwOSAyMC4zMTU1IDE0Ljk1NTggMTkuNjkwNEMxNC4zMzA3IDE5LjA2NTIgMTMuOTc5NSAxOC4yMTc0IDEzLjk3OTUgMTcuMzMzM1YxNi42NjY3QzEzLjk4NzcgMTYgMTQuMTg3MyAxNS4zNDk4IDE0LjU1NDUgMTQuNzkzM0MxNC42MjMgMTQuNzAzMSAxNC42NjczIDE0LjU5NjkgMTQuNjgzMyAxNC40ODQ4QzE0LjY5OTQgMTQuMzcyNyAxNC42ODY2IDE0LjI1ODMgMTQuNjQ2MiAxNC4xNTI1QzE0LjQ3MjUgMTMuNzA0NyAxNC4zODg5IDEzLjIyNyAxNC40MDAyIDEyLjc0NjhDMTQuNDExNSAxMi4yNjY2IDE0LjUxNzUgMTEuNzkzNCAxNC43MTIgMTEuMzU0MkMxNS4yNTc2IDExLjQxMjkgMTUuNzgzIDExLjU5MzYgMTYuMjQ5MiAxMS44ODNDMTYuNzE1NSAxMi4xNzI0IDE3LjExMDYgMTIuNTYzIDE3LjQwNTMgMTMuMDI1OEMxNy40NjU0IDEzLjExOTggMTcuNTQ4IDEzLjE5NzEgMTcuNjQ1NyAxMy4yNTA4QzE3Ljc0MzQgMTMuMzA0NiAxNy44NTMgMTMuMzMyOSAxNy45NjQ1IDEzLjMzMzNIMjAuNjYwM0MyMC43NzIyIDEzLjMzMzMgMjAuODgyMyAxMy4zMDUyIDIwLjk4MDUgMTMuMjUxNEMyMS4wNzg3IDEzLjE5NzcgMjEuMTYxNyAxMy4xMjAxIDIxLjIyMiAxMy4wMjU4QzIxLjUxNjcgMTIuNTYyOSAyMS45MTE4IDEyLjE3MjMgMjIuMzc4MSAxMS44ODI5QzIyLjg0NDMgMTEuNTkzNSAyMy4zNjk3IDExLjQxMjggMjMuOTE1MyAxMS4zNTQyQzI0LjEwOTYgMTEuNzkzNSAyNC4yMTUyIDEyLjI2NjggMjQuMjI2MiAxMi43NDY5QzI0LjIzNzMgMTMuMjI3MSAyNC4xNTM0IDEzLjcwNDggMjMuOTc5NSAxNC4xNTI1QzIzLjkzOTIgMTQuMjU3MyAyMy45MjU3IDE0LjM3MDUgMjMuOTQwMyAxNC40ODE4QzIzLjk1NDggMTQuNTkzMiAyMy45OTcgMTQuNjk5MSAyNC4wNjI4IDE0Ljc5QzI0LjQzMzcgMTUuMzQ2NCAyNC42MzYyIDE1Ljk5OCAyNC42NDYyIDE2LjY2NjdWMTcuMzMzM1oiIGZpbGw9ImJsYWNrIi8+CjwvZz4KPC9zdmc+Cg==);
+ content: "";
+ display: flex;
+ height: 36px;
+ width: 37px;
+ background-repeat: no-repeat;
+}
+
+.linkedin-icon:hover {
+ opacity: 0.6;
+}
+
+.linkedin-icon:before {
+ background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzciIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCAzNyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgaWQ9IkxpbmtlZGluIj4KPGNpcmNsZSBpZD0iRWxsaXBzZSAyIiBjeD0iMTguOTc5NSIgY3k9IjE4IiByPSIxNy41IiBmaWxsPSJ3aGl0ZSIgc3Ryb2tlPSJibGFjayIvPgo8cGF0aCBpZD0iVmVjdG9yIiBkPSJNMTEuOTc5NSAxNC42NjY3SDE1LjMxMjhWMjZIMTEuOTc5NVYxNC42NjY3Wk0xMy42MzYyIDEzLjMzMzNIMTMuNjE3NUMxMi42MjI4IDEzLjMzMzMgMTEuOTc5NSAxMi41OTIgMTEuOTc5NSAxMS42NjZDMTEuOTc5NSAxMC43MiAxMi42NDI4IDEwIDEzLjY1NTUgMTBDMTQuNjY5NSAxMCAxNS4yOTQyIDEwLjcyIDE1LjMxMjggMTEuNjY2QzE1LjMxMjggMTIuNTkxMyAxNC42Njk1IDEzLjMzMzMgMTMuNjM2MiAxMy4zMzMzWk0yNy45Nzk1IDI2SDI0LjY0NjJWMTkuOTM0QzI0LjY0NjIgMTguNDY4NyAyMy44Mjk1IDE3LjQ2ODcgMjIuNTE4MiAxNy40Njg3QzIxLjUxNzUgMTcuNDY4NyAyMC45NzYyIDE4LjE0MzMgMjAuNzEzNSAxOC43OTUzQzIwLjYxNzUgMTkuMDI4NyAyMC42NDYyIDE5LjY3NCAyMC42NDYyIDIwVjI2SDE3LjMxMjhWMTQuNjY2N0gyMC42NDYyVjE2LjQxMDdDMjEuMTI2OCAxNS42NjY3IDIxLjg3OTUgMTQuNjY2NyAyMy44MDQ4IDE0LjY2NjdDMjYuMTkwMiAxNC42NjY3IDI3Ljk3ODggMTYuMTY2NyAyNy45Nzg4IDE5LjUxNkwyNy45Nzk1IDI2WiIgZmlsbD0iYmxhY2siLz4KPC9nPgo8L3N2Zz4K);
+ content: "";
+ display: flex;
+ height: 36px;
+ width: 37px;
+ background-repeat: no-repeat;
+}
+
+.bluesky-icon:hover {
+ opacity: 0.6;
+}
+
+.bluesky-icon:before {
+ background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgd2lkdGg9IjM2Ljk5OTk5NiIKICAgaGVpZ2h0PSIzNS45OTk5OTYiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzkwNSIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzOTA5IiAvPgogIDxlbGxpcHNlCiAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjAuOTg2MzAzO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgaWQ9InBhdGgxMDEyIgogICAgIGN4PSIxOC40OTk5OTgiCiAgICAgY3k9IjE3Ljk5OTk5OCIKICAgICByeD0iMTguMDA2ODQ3IgogICAgIHJ5PSIxNy41MDY4NDciIC8+CiAgPHBhdGgKICAgICBkPSJtIDEyLjYyNjgwNSwxMC4xMDAxNTQgYyAyLjM3NzMzMSwxLjc4NDc1NCA0LjkzNDQyMyw1LjQwMzQ4NCA1Ljg3MzI1OCw3LjM0NTUwNyAwLjkzODkwNiwtMS45NDE4ODEgMy40OTU4NDksLTUuNTYwNzkyIDUuODczMjU4LC03LjM0NTUwNyAxLjcxNTM1MywtMS4yODc4MDI3IDQuNDk0Njc3LC0yLjI4NDIzMjUgNC40OTQ2NzcsMC44ODY0NjQgMCwwLjYzMzIyNiAtMC4zNjMwNTUsNS4zMTk0NjQgLTAuNTc1OTg4LDYuMDgwMjU1IC0wLjc0MDE2NSwyLjY0NTA0NSAtMy40MzcyOTYsMy4zMTk2NzEgLTUuODM2NDM4LDIuOTExMzU0IDQuMTkzNjU1LDAuNzEzNzQ2IDUuMjYwNDc2LDMuMDc3OTIyIDIuOTU2NTQ1LDUuNDQyMDk3IC00LjM3NTYyNyw0LjQ5MDAzMiAtNi4yODkwNDgsLTEuMTI2NTY2IC02Ljc3OTU2NCwtMi41NjU3NDIgLTAuMDg5ODgsLTAuMjYzODM5IC0wLjEzMTkzMywtMC4zODcyNjQgLTAuMTMyNTU1LC0wLjI4MjMwNyAtNi4yMmUtNCwtMC4xMDQ5NTcgLTAuMDQyNywwLjAxODQ3IC0wLjEzMjU1NSwwLjI4MjMwNyAtMC40OTAyOTYsMS40MzkxNzYgLTIuNDAzNjc4LDcuMDU1OTE2IC02Ljc3OTU1NiwyLjU2NTc0MiBDIDkuMjgzOTE2LDIzLjA1NjE0OSAxMC4zNTA3MDUsMjAuNjkxODMgMTQuNTQ0NDI0LDE5Ljk3ODIyNyAxMi4xNDUyMTgsMjAuMzg2NTQ0IDkuNDQ4MDQ3OSwxOS43MTE5MTIgOC43MDc5OTIzLDE3LjA2Njg3MyA4LjQ5NTA0NjYsMTYuMzA2MDExIDguMTMxOTk4MSwxMS42MTk3NzIgOC4xMzE5OTgxLDEwLjk4NjYxOCBjIDAsLTMuMTcwNjk2NSAyLjc3OTM5NTksLTIuMTc0MjY2NyA0LjQ5NDY4MzksLTAuODg2NDY0IHoiCiAgICAgZmlsbD0iIzExODVmZSIKICAgICBpZD0icGF0aDkwMyIKICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO3N0cm9rZS13aWR0aDowLjAzNTc1MTUiIC8+Cjwvc3ZnPgo=);
+ content: "";
+ display: flex;
+ height: 36px;
+ width: 37px;
+ background-repeat: no-repeat;
+}
+
+.mastodon-icon:hover {
+ opacity: 0.6;
+}
+
+.mastodon-icon:before {
+ background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgd2lkdGg9IjM2Ljk5OTk5NiIKICAgaGVpZ2h0PSIzNS45OTk5OTYiCiAgIHZpZXdCb3g9IjAgMCAzNC42ODc0OTIgMzMuNzQ5OTk2IgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmczMTU3IgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnMzMTYxIiAvPgogIDxlbGxpcHNlCiAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC45MjQ2NTk7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICBpZD0icGF0aDEwMTIiCiAgICAgY3g9IjE3LjM0Mzc0OCIKICAgICBjeT0iMTYuODc0OTk4IgogICAgIHJ4PSIxNi44ODE0MTgiCiAgICAgcnk9IjE2LjQxMjY2OCIgLz4KICA8ZwogICAgIGlkPSJnMjc2OCIKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjY1NjEsMCwwLDAuNjU2MSw3LjUwMjI0ODcsNy4wMzM1KSI+CiAgICA8ZwogICAgICAgaWQ9ImcyNzYzIj4KICAgICAgPHBhdGgKICAgICAgICAgZmlsbD0iIzJiOTBkOSIKICAgICAgICAgZD0ibSAyOC4zOTYwMzcsMTcuOTg0NyBjIC0wLjQxMTM1LDIuMTE2MjMgLTMuNjg0MjIsNC40MzIyNCAtNy40NDMxMSw0Ljg4MTA5IC0xLjk2MDEsMC4yMzM4OCAtMy44ODk5OCwwLjQ0ODg1IC01Ljk0Nzg2LDAuMzU0NDYgLTMuMzY1NDksLTAuMTU0MiAtNi4wMjEwOTA0LC0wLjgwMzMxIC02LjAyMTA5MDQsLTAuODAzMzEgMCwwLjMyNzYzIDAuMDIwMiwwLjYzOTU4IDAuMDYwNiwwLjkzMTMyIDAuNDM3NTMsMy4zMjEzNiAzLjI5MzM5MDQsMy41MjAzMyA1Ljk5ODYxMDQsMy42MTMxIDIuNzMwNDMsMC4wOTM0IDUuMTYxNjksLTAuNjczMTkgNS4xNjE2OSwtMC42NzMxOSBsIDAuMTEyMTcsMi40Njg0MyBjIDAsMCAtMS45MDk4MywxLjAyNTU1IC01LjMxMiwxLjIxNDE3IC0xLjg3NjA2LDAuMTAzMTIgLTQuMjA1NDgsLTAuMDQ3MiAtNi45MTg2MjA0LC0wLjc2NTMyIC01Ljg4NDM0MiwtMS41NTc0OCAtNi44OTYzMTUsLTcuODI5ODkgLTcuMDUxMTU3LC0xNC4xOTQyOCAtMC4wNDcyLC0xLjg4OTYzIC0wLjAxODEsLTMuNjcxNDUgLTAuMDE4MSwtNS4xNjE2OSAwLC02LjUwNzkxIDQuMjYzOTksLTguNDE1NDggNC4yNjM5OSwtOC40MTU0OCBDIDcuNDMxMTY2NiwwLjQ0NjU5IDExLjEyMDM5NywwLjAzMTM2IDE0Ljk1NTc0NywwIGggMC4wOTQyIGMgMy44MzUzNCwwLjAzMTQgNy41MjcsMC40NDY1OSA5LjY3Njg1LDEuNDM0IDAsMCA0LjI2MzgzLDEuOTA3NTcgNC4yNjM4Myw4LjQxNTQ4IDAsMCAwLjA1MzUsNC44MDE1OCAtMC41OTQ2NCw4LjEzNTIyIgogICAgICAgICBpZD0icGF0aDMxNTMiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjAuMTI5MzA1IiAvPgogICAgICA8cGF0aAogICAgICAgICBmaWxsPSIjZmZmZmZmIgogICAgICAgICBkPSJtIDIzLjk2MTE1NywxMy42OTQ2NiB2IDcuODggaCAtMy4xMjE5MSB2IC03LjY0ODM4IGMgMCwtMS42MTIyNyAtMC42NzgzNiwtMi40MzA2MSAtMi4wMzUyNiwtMi40MzA2MSAtMS41MDAyNiwwIC0yLjI1MjE3LDAuOTcwNzYgLTIuMjUyMTcsMi44OTAyOSB2IDQuMTg2NCBoIC0zLjEwMzQ3IHYgLTQuMTg2NCBjIDAsLTEuOTE5NTMgLTAuNzUyMDcsLTIuODkwMjkgLTIuMjUyMzMsLTIuODkwMjkgLTEuMzU2OTAwNCwwIC0yLjAzNTI2MDQsMC44MTgzNCAtMi4wMzUyNjA0LDIuNDMwNjEgdiA3LjY0ODM4IGggLTMuMTIxOTEgdiAtNy44OCBjIDAsLTEuNjEwNDkgMC40MTAwNiwtMi44OTAyOSAxLjIzMzczLC0zLjgzNzEyIDAuODQ5MzgsLTAuOTQ2ODQgMS45NjE3MiwtMS40MzIyMSAzLjM0MjUzMDQsLTEuNDMyMjEgMS41OTc1NywwIDIuODA3MzgsMC42MTQwMyAzLjYwNzI5LDEuODQyMjcgbCAwLjc3NzYsMS4zMDM1NSAwLjc3Nzc3LC0xLjMwMzU1IGMgMC43OTk3NSwtMS4yMjgyNCAyLjAwOTU2LC0xLjg0MjI3IDMuNjA3MjksLTEuODQyMjcgMS4zODA2NSwwIDIuNDkyOTksMC40ODUzNyAzLjM0MjUzLDEuNDMyMjEgMC44MjM1MSwwLjk0NjgzIDEuMjMzNTcsMi4yMjY2MyAxLjIzMzU3LDMuODM3MTIiCiAgICAgICAgIGlkPSJwYXRoMzE1NSIKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjEyOTMwNSIgLz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo=);
+ content: "";
+ display: flex;
+ height: 36px;
+ width: 37px;
+ background-repeat: no-repeat;
+}
+
+.close-button {
+ background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgaWQ9IkNsb3NlIGljb24iPgo8cGF0aCBpZD0iVmVjdG9yIiBkPSJNMjUuNzA4MSAyNC4yOTI2QzI1LjgwMSAyNC4zODU1IDI1Ljg3NDcgMjQuNDk1OCAyNS45MjQ5IDI0LjYxNzJDMjUuOTc1MiAyNC43Mzg2IDI2LjAwMTEgMjQuODY4NyAyNi4wMDExIDI1LjAwMDFDMjYuMDAxMSAyNS4xMzE1IDI1Ljk3NTIgMjUuMjYxNiAyNS45MjQ5IDI1LjM4M0MyNS44NzQ3IDI1LjUwNDQgMjUuODAxIDI1LjYxNDcgMjUuNzA4MSAyNS43MDc2QzI1LjYxNTEgMjUuODAwNSAyNS41MDQ4IDI1Ljg3NDIgMjUuMzgzNSAyNS45MjQ1QzI1LjI2MjEgMjUuOTc0NyAyNS4xMzIgMjYuMDAwNiAyNS4wMDA2IDI2LjAwMDZDMjQuODY5MiAyNi4wMDA2IDI0LjczOTEgMjUuOTc0NyAyNC42MTc3IDI1LjkyNDVDMjQuNDk2MyAyNS44NzQyIDI0LjM4NiAyNS44MDA1IDI0LjI5MzEgMjUuNzA3NkwxNi4wMDA2IDE3LjQxMzhMNy43MDgwNiAyNS43MDc2QzcuNTIwNDIgMjUuODk1MiA3LjI2NTkyIDI2LjAwMDYgNy4wMDA1NiAyNi4wMDA2QzYuNzM1MTkgMjYuMDAwNiA2LjQ4MDcgMjUuODk1MiA2LjI5MzA2IDI1LjcwNzZDNi4xMDU0MiAyNS41MTk5IDYgMjUuMjY1NCA2IDI1LjAwMDFDNiAyNC43MzQ3IDYuMTA1NDIgMjQuNDgwMiA2LjI5MzA2IDI0LjI5MjZMMTQuNTg2OCAxNi4wMDAxTDYuMjkzMDYgNy43MDc1N0M2LjEwNTQyIDcuNTE5OTMgNiA3LjI2NTQzIDYgNy4wMDAwN0M2IDYuNzM0NyA2LjEwNTQyIDYuNDgwMjEgNi4yOTMwNiA2LjI5MjU3QzYuNDgwNyA2LjEwNDkzIDYuNzM1MTkgNS45OTk1MSA3LjAwMDU2IDUuOTk5NTFDNy4yNjU5MiA1Ljk5OTUxIDcuNTIwNDIgNi4xMDQ5MyA3LjcwODA2IDYuMjkyNTdMMTYuMDAwNiAxNC41ODYzTDI0LjI5MzEgNi4yOTI1N0MyNC40ODA3IDYuMTA0OTMgMjQuNzM1MiA1Ljk5OTUxIDI1LjAwMDYgNS45OTk1MUMyNS4yNjU5IDUuOTk5NTEgMjUuNTIwNCA2LjEwNDkzIDI1LjcwODEgNi4yOTI1N0MyNS44OTU3IDYuNDgwMjEgMjYuMDAxMSA2LjczNDcgMjYuMDAxMSA3LjAwMDA3QzI2LjAwMTEgNy4yNjU0MyAyNS44OTU3IDcuNTE5OTMgMjUuNzA4MSA3LjcwNzU3TDE3LjQxNDMgMTYuMDAwMUwyNS43MDgxIDI0LjI5MjZaIiBmaWxsPSJibGFjayIvPgo8L2c+Cjwvc3ZnPgo=);
+ content: "";
+ display: flex;
+ height: 36px;
+ width: 36px;
+ background-repeat: no-repeat;
+ border: 0px solid;
+}
+
+.cards-list {
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+}
+
+ul.row {
+ margin: 0;
+ padding: 0;
+}
+
+.projects-list {
+ list-style-type: none;
+ padding: none;
+ margin-left: 0;
+ width: 100%;
+}
+
+.row {
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0 0;
+}
+
+.custom-progress-bar::-webkit-progress-value {
+ background-color: var(--ifm-color-primary-p1);
+}
+.custom-progress-bar::-webkit-progress-bar {
+ background-color: #eee;
+}
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.container_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugLayout-styles-module {
+ padding: 20px;
+ padding-top: 80px;
+ overflow-x: hidden;
+ background-color: #18191a;
+ color: white;
+ min-height: 100vh;
+}
+
+.container_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugLayout-styles-module code {
+ color: white;
+ background-color: #444950;
+}
+
+.nav_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugLayout-styles-module {
+ position: fixed;
+ display: flex;
+ justify-content: space-evenly;
+ align-items: center;
+ height: 3.75rem;
+ background-color: #242526;
+ width: 100%;
+ z-index: 1;
+}
+
+.navlink_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugLayout-styles-module {
+ color: white;
+ font-weight: 500;
+ font-size: clamp(12px, 4vw, 16px);
+ text-align: center;
+ border-radius: 4px;
+ padding: 6px;
+}
+
+.navlink_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugLayout-styles-module:hover {
+ text-decoration: none;
+ background-color: #292a2b;
+}
+
+.active_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugLayout-styles-module {
+ background-color: #363739;
+}
+
+@media screen and (min-width: 800px) {
+ .nav_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugLayout-styles-module {
+ flex-direction: column;
+ justify-content: flex-start;
+ align-items: center;
+ height: 100vh;
+ width: 200px;
+ float: left;
+ background-color: #18191a;
+ border-right: 1px solid #606770;
+ padding-top: 20px;
+ }
+
+ .navlink_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugLayout-styles-module {
+ width: 80%;
+ margin-top: 20px;
+ text-align: left;
+ }
+
+ .container_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugLayout-styles-module {
+ padding-top: 40px;
+ float: right;
+ width: calc(100% - 200px);
+ }
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.containerParaiso_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugJsonView-styles-module {
+ font-family: monospace;
+ cursor: default;
+ background-color: rgb(41 42 43);
+ position: relative;
+ margin-top: 10px;
+ padding: 10px;
+ border-radius: 4px;
+ font-size: 13px;
+}
+
+.basicElementParaiso_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugJsonView-styles-module {
+ color: white;
+ padding: 3px 5px 3px 20px;
+ border-left: 1px solid rgb(79 66 76);
+}
+
+.labelParaiso_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugJsonView-styles-module {
+ color: rgb(231 233 219);
+ letter-spacing: 0.5px;
+ margin-right: 3px;
+}
+
+.nullValueParaiso_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugJsonView-styles-module {
+ display: inline-block;
+ color: rgb(254 196 24);
+ font-size: 11px;
+ font-weight: bold;
+ background-color: rgb(79 66 76);
+ padding: 1px 2px;
+ border-radius: 3px;
+ text-transform: uppercase;
+}
+
+.undefinedValueParaiso_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugJsonView-styles-module {
+ color: rgb(141 134 135);
+}
+
+.stringValueParaiso_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugJsonView-styles-module {
+ color: rgb(249 155 21);
+}
+
+.booleanValueParaiso_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugJsonView-styles-module {
+ color: rgb(129 91 164);
+}
+
+.numberValueParaiso_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugJsonView-styles-module {
+ color: rgb(233 107 168);
+}
+
+.otherValueParaiso_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugJsonView-styles-module {
+ color: white;
+}
+
+.punctuationParaiso_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugJsonView-styles-module {
+ color: white;
+}
+
+.expandIconParaiso_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugJsonView-styles-module {
+ display: inline-block;
+ color: rgb(129 91 164);
+ font-size: 22px;
+ vertical-align: baseline;
+ margin-right: 3px;
+ line-height: 10px;
+}
+
+.collapseIconParaiso_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugJsonView-styles-module::after {
+ content: '\25BE';
+}
+
+.collapseIconParaiso_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugJsonView-styles-module {
+ display: inline-block;
+ color: rgb(6 182 239);
+ font-size: 22px;
+ vertical-align: baseline;
+ margin-right: 3px;
+ line-height: 10px;
+}
+
+.expandIconParaiso_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugJsonView-styles-module::after {
+ content: '\25B8';
+}
+
+.collapseContentParaiso_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugJsonView-styles-module {
+ color: rgb(249 155 21);
+ font-size: 18px;
+ line-height: 10px;
+ cursor: pointer;
+}
+
+.collapseContentParaiso_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugJsonView-styles-module::after {
+ content: '...';
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.listItem_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugRegistry-styles-module {
+ background-color: #242526;
+ padding: 10px;
+ border-radius: 4px;
+ margin-bottom: 20px;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.listItem_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugRoutes-styles-module {
+ background-color: #242526;
+ padding: 10px;
+ border-radius: 4px;
+ margin-bottom: 20px;
+}
+
+.route_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugRoutes-styles-module {
+ margin-bottom: 10px;
+}
+
+.routeName_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugRoutes-styles-module {
+ color: #e06b6b;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.sectionTitle_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugSiteMetadata-styles-module {
+ margin-top: 20px;
+}
+
+.listItem_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugSiteMetadata-styles-module {
+ background-color: #242526;
+ padding: 10px;
+ border-radius: 4px;
+ margin-bottom: 20px;
+}
+
+.version_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugSiteMetadata-styles-module {
+ float: right;
+}
+
+.name_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugSiteMetadata-styles-module {
+ font-weight: 800;
+ color: #e06b6b;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+:root {
+ --docusaurus-tag-list-border: var(--ifm-color-emphasis-300);
+}
+
+.tag_node_modules-\@docusaurus-theme-classic-lib-theme-Tag-styles-module {
+ border: 1px solid var(--docusaurus-tag-list-border);
+ transition: border var(--ifm-transition-fast);
+}
+
+.tag_node_modules-\@docusaurus-theme-classic-lib-theme-Tag-styles-module:hover {
+ --docusaurus-tag-list-border: var(--ifm-link-color);
+ text-decoration: none;
+}
+
+.tagRegular_node_modules-\@docusaurus-theme-classic-lib-theme-Tag-styles-module {
+ border-radius: var(--ifm-global-radius);
+ padding: 0.2rem 0.5rem 0.3rem;
+ font-size: 90%;
+}
+
+.tagWithCount_node_modules-\@docusaurus-theme-classic-lib-theme-Tag-styles-module {
+ display: flex;
+ align-items: center;
+ position: relative;
+ padding: 0 0.5rem 0 1rem;
+ border-left: 0;
+}
+
+.tagWithCount_node_modules-\@docusaurus-theme-classic-lib-theme-Tag-styles-module::before,
+.tagWithCount_node_modules-\@docusaurus-theme-classic-lib-theme-Tag-styles-module::after {
+ content: '';
+ position: absolute;
+ top: 50%;
+ border: 1px solid var(--docusaurus-tag-list-border);
+ transition: inherit;
+}
+
+.tagWithCount_node_modules-\@docusaurus-theme-classic-lib-theme-Tag-styles-module::before {
+ right: 100%;
+ transform: translate(50%, -50%) rotate(-45deg);
+ width: 1.18rem;
+ height: 1.18rem;
+ border-right: 0;
+ border-bottom: 0;
+}
+
+.tagWithCount_node_modules-\@docusaurus-theme-classic-lib-theme-Tag-styles-module::after {
+ left: 0;
+ transform: translateY(-50%);
+ width: 0.5rem;
+ height: 0.5rem;
+ border-radius: 50%;
+}
+
+.tagWithCount_node_modules-\@docusaurus-theme-classic-lib-theme-Tag-styles-module span {
+ background: var(--ifm-color-secondary);
+ color: var(--ifm-color-black);
+ font-size: 0.7rem;
+ line-height: 1.2;
+ border-radius: var(--ifm-global-radius);
+ padding: 0.1rem 0.4rem;
+ margin-left: 0.3rem;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.tags_node_modules-\@docusaurus-theme-classic-lib-theme-TagsListInline-styles-module {
+ display: inline;
+}
+
+.tag_node_modules-\@docusaurus-theme-classic-lib-theme-TagsListInline-styles-module {
+ margin: 0 0.4rem 0.5rem 0;
+ display: inline-block;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.iconEdit_node_modules-\@docusaurus-theme-classic-lib-theme-Icon-Edit-styles-module {
+ margin-right: 0.3em;
+ vertical-align: sub;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.lastUpdated_node_modules-\@docusaurus-theme-classic-lib-theme-EditMetaRow-styles-module {
+ font-size: smaller;
+ font-style: italic;
+ margin-top: 0.2rem;
+}
+
+@media (min-width: 997px) {
+ .lastUpdated_node_modules-\@docusaurus-theme-classic-lib-theme-EditMetaRow-styles-module {
+ text-align: right;
+ }
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.tocCollapsibleButton_node_modules-\@docusaurus-theme-classic-lib-theme-TOCCollapsible-CollapseButton-styles-module {
+ font-size: inherit;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 0.4rem 0.8rem;
+ width: 100%;
+}
+
+.tocCollapsibleButton_node_modules-\@docusaurus-theme-classic-lib-theme-TOCCollapsible-CollapseButton-styles-module::after {
+ content: '';
+ background: var(--ifm-menu-link-sublist-icon) 50% 50% / 2rem 2rem no-repeat;
+ filter: var(--ifm-menu-link-sublist-icon-filter);
+ height: 1.25rem;
+ width: 1.25rem;
+ transform: rotate(180deg);
+ transition: transform var(--ifm-transition-fast);
+}
+
+.tocCollapsibleButtonExpanded_node_modules-\@docusaurus-theme-classic-lib-theme-TOCCollapsible-CollapseButton-styles-module::after {
+ transform: none;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.tocCollapsible_node_modules-\@docusaurus-theme-classic-lib-theme-TOCCollapsible-styles-module {
+ background-color: var(--ifm-menu-color-background-active);
+ border-radius: var(--ifm-global-radius);
+ margin: 1rem 0;
+}
+
+.tocCollapsibleContent_node_modules-\@docusaurus-theme-classic-lib-theme-TOCCollapsible-styles-module > ul {
+ border-left: none;
+ border-top: 1px solid var(--ifm-color-emphasis-300);
+ padding: 0.2rem 0;
+ font-size: 15px;
+}
+
+.tocCollapsibleContent_node_modules-\@docusaurus-theme-classic-lib-theme-TOCCollapsible-styles-module ul li {
+ margin: 0.4rem 0.8rem;
+}
+
+.tocCollapsibleContent_node_modules-\@docusaurus-theme-classic-lib-theme-TOCCollapsible-styles-module a {
+ display: block;
+}
+
+.tocCollapsibleExpanded_node_modules-\@docusaurus-theme-classic-lib-theme-TOCCollapsible-styles-module {
+ transform: none;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+@media (min-width: 997px) {
+ /* Prevent hydration FOUC, as the mobile TOC needs to be server-rendered */
+ .tocMobile_node_modules-\@docusaurus-theme-classic-lib-theme-DocItem-TOC-Mobile-styles-module {
+ display: none;
+ }
+}
+
+@media print {
+ .tocMobile_node_modules-\@docusaurus-theme-classic-lib-theme-DocItem-TOC-Mobile-styles-module {
+ display: none;
+ }
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.tableOfContents_node_modules-\@docusaurus-theme-classic-lib-theme-TOC-styles-module {
+ max-height: calc(100vh - (var(--ifm-navbar-height) + 2rem));
+ overflow-y: auto;
+ position: sticky;
+ top: calc(var(--ifm-navbar-height) + 1rem);
+}
+
+@media (max-width: 996px) {
+ .tableOfContents_node_modules-\@docusaurus-theme-classic-lib-theme-TOC-styles-module {
+ display: none;
+ }
+
+ .docItemContainer_node_modules-\@docusaurus-theme-classic-lib-theme-TOC-styles-module {
+ padding: 0 0.3rem;
+ }
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.backToTopButton_node_modules-\@docusaurus-theme-classic-lib-theme-BackToTopButton-styles-module {
+ position: fixed;
+ right: 1.3rem;
+ bottom: 1.3rem;
+ border-radius: 50%;
+ background-color: var(--ifm-color-emphasis-200);
+ width: 3rem;
+ height: 3rem;
+ z-index: calc(var(--ifm-z-index-fixed) - 1);
+ box-shadow: var(--ifm-global-shadow-lw);
+ transition: all var(--ifm-transition-fast)
+ var(--ifm-transition-timing-default);
+ opacity: 0;
+ transform: scale(0);
+ visibility: hidden;
+}
+
+.backToTopButton_node_modules-\@docusaurus-theme-classic-lib-theme-BackToTopButton-styles-module::after {
+ content: ' ';
+ display: inline-block;
+ mask: var(--ifm-menu-link-sublist-icon) 50% / 2rem 2rem no-repeat;
+ background-color: var(--ifm-color-emphasis-1000);
+ width: 100%;
+ height: 100%;
+}
+
+@media (hover: hover) {
+ .backToTopButton_node_modules-\@docusaurus-theme-classic-lib-theme-BackToTopButton-styles-module:hover {
+ background-color: var(--ifm-color-emphasis-300);
+ }
+}
+
+.backToTopButtonShow_node_modules-\@docusaurus-theme-classic-lib-theme-BackToTopButton-styles-module {
+ opacity: 1;
+ transform: scale(1);
+ visibility: visible;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.skipToContent_node_modules-\@docusaurus-theme-classic-lib-theme-SkipToContent-styles-module {
+ position: fixed;
+ top: 1rem;
+ left: 100%;
+ z-index: calc(var(--ifm-z-index-fixed) + 1);
+ padding: calc(var(--ifm-global-spacing) / 2) var(--ifm-global-spacing);
+ color: var(--ifm-color-emphasis-900);
+ background-color: var(--ifm-background-surface-color);
+}
+
+.skipToContent_node_modules-\@docusaurus-theme-classic-lib-theme-SkipToContent-styles-module:focus {
+ left: 1rem;
+ box-shadow: var(--ifm-global-shadow-md);
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.closeButton_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-CloseButton-styles-module {
+ padding: 0;
+ line-height: 0;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.content_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-Content-styles-module {
+ font-size: 85%;
+ text-align: center;
+ padding: 5px 0;
+}
+
+.content_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-Content-styles-module a {
+ color: inherit;
+ text-decoration: underline;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+:root {
+ --docusaurus-announcement-bar-height: auto;
+}
+
+.announcementBar_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-styles-module {
+ display: flex;
+ align-items: center;
+ height: var(--docusaurus-announcement-bar-height);
+ background-color: var(--ifm-color-white);
+ color: var(--ifm-color-black);
+
+ /*
+ Unfortunately we can't make announcement bar render above the navbar
+ IE need to use border-bottom instead of shadow
+ See https://github.com/facebookincubator/infima/issues/275
+
+ box-shadow: var(--ifm-global-shadow-lw);
+ z-index: calc(var(--ifm-z-index-fixed) + 1);
+ */
+ border-bottom: 1px solid var(--ifm-color-emphasis-100);
+}
+
+html[data-announcement-bar-initially-dismissed='true'] .announcementBar_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-styles-module {
+ display: none;
+}
+
+.announcementBarPlaceholder_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-styles-module {
+ flex: 0 0 10px;
+}
+
+.announcementBarClose_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-styles-module {
+ flex: 0 0 30px;
+ align-self: stretch;
+}
+
+.announcementBarContent_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-styles-module {
+ flex: 1 1 auto;
+}
+
+@media print {
+ .announcementBar_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-styles-module {
+ display: none;
+ }
+}
+
+@media (min-width: 997px) {
+ :root {
+ --docusaurus-announcement-bar-height: 30px;
+ }
+
+ .announcementBarPlaceholder_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-styles-module,
+ .announcementBarClose_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-styles-module {
+ flex-basis: 50px;
+ }
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.toggle_node_modules-\@docusaurus-theme-classic-lib-theme-ColorModeToggle-styles-module {
+ width: 2rem;
+ height: 2rem;
+}
+
+.toggleButton_node_modules-\@docusaurus-theme-classic-lib-theme-ColorModeToggle-styles-module {
+ -webkit-tap-highlight-color: transparent;
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ width: 100%;
+ height: 100%;
+ border-radius: 50%;
+ transition: background var(--ifm-transition-fast);
+}
+
+.toggleButton_node_modules-\@docusaurus-theme-classic-lib-theme-ColorModeToggle-styles-module:hover {
+ background: var(--ifm-color-emphasis-200);
+}
+
+[data-theme='light'] .darkToggleIcon_node_modules-\@docusaurus-theme-classic-lib-theme-ColorModeToggle-styles-module,
+[data-theme='dark'] .lightToggleIcon_node_modules-\@docusaurus-theme-classic-lib-theme-ColorModeToggle-styles-module {
+ display: none;
+}
+
+.toggleButtonDisabled_node_modules-\@docusaurus-theme-classic-lib-theme-ColorModeToggle-styles-module {
+ cursor: not-allowed;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.darkNavbarColorModeToggle_node_modules-\@docusaurus-theme-classic-lib-theme-Navbar-ColorModeToggle-styles-module:hover {
+ background: var(--ifm-color-gray-800);
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.themedComponent_node_modules-\@docusaurus-theme-common-lib-components-ThemedComponent-styles-module {
+ display: none;
+}
+
+[data-theme='light'] .themedComponent--light_node_modules-\@docusaurus-theme-common-lib-components-ThemedComponent-styles-module {
+ display: initial;
+}
+
+[data-theme='dark'] .themedComponent--dark_node_modules-\@docusaurus-theme-common-lib-components-ThemedComponent-styles-module {
+ display: initial;
+}
+
+/*
+JS disabled??? Show light version by default => better than showing nothing
+TODO bad, but we currently always show light mode when there's no data-theme
+ */
+html:not([data-theme]) .themedComponent--light_node_modules-\@docusaurus-theme-common-lib-components-ThemedComponent-styles-module {
+ display: initial;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+:root {
+ --docusaurus-collapse-button-bg: transparent;
+ --docusaurus-collapse-button-bg-hover: rgb(0 0 0 / 10%);
+}
+
+[data-theme='dark']:root {
+ --docusaurus-collapse-button-bg: rgb(255 255 255 / 5%);
+ --docusaurus-collapse-button-bg-hover: rgb(255 255 255 / 10%);
+}
+
+@media (min-width: 997px) {
+ .collapseSidebarButton_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-CollapseButton-styles-module {
+ display: block !important;
+ background-color: var(--docusaurus-collapse-button-bg);
+ height: 40px;
+ position: sticky;
+ bottom: 0;
+ border-radius: 0;
+ border: 1px solid var(--ifm-toc-border-color);
+ }
+
+ .collapseSidebarButtonIcon_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-CollapseButton-styles-module {
+ transform: rotate(180deg);
+ margin-top: 4px;
+ }
+
+ [dir='rtl'] .collapseSidebarButtonIcon_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-CollapseButton-styles-module {
+ transform: rotate(0);
+ }
+
+ .collapseSidebarButton_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-CollapseButton-styles-module:hover,
+ .collapseSidebarButton_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-CollapseButton-styles-module:focus {
+ background-color: var(--docusaurus-collapse-button-bg-hover);
+ }
+}
+
+.collapseSidebarButton_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-CollapseButton-styles-module {
+ display: none;
+ margin: 0;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.iconExternalLink_node_modules-\@docusaurus-theme-classic-lib-theme-Icon-ExternalLink-styles-module {
+ margin-left: 0.3rem;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.menuExternalLink_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebarItem-Link-styles-module {
+ align-items: center;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+@media (min-width: 997px) {
+ .menuHtmlItem_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebarItem-Html-styles-module {
+ padding: var(--ifm-menu-link-padding-vertical)
+ var(--ifm-menu-link-padding-horizontal);
+ }
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+@media (min-width: 997px) {
+ .menu_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-Content-styles-module {
+ flex-grow: 1;
+ padding: 0.5rem;
+ }
+ @supports (scrollbar-gutter: stable) {
+ .menu_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-Content-styles-module {
+ padding: 0.5rem 0 0.5rem 0.5rem;
+ scrollbar-gutter: stable;
+ }
+ }
+
+ .menuWithAnnouncementBar_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-Content-styles-module {
+ margin-bottom: var(--docusaurus-announcement-bar-height);
+ }
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+@media (min-width: 997px) {
+ .sidebar_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-styles-module {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ padding-top: var(--ifm-navbar-height);
+ width: var(--doc-sidebar-width);
+ }
+
+ .sidebarWithHideableNavbar_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-styles-module {
+ padding-top: 0;
+ }
+
+ .sidebarHidden_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-styles-module {
+ opacity: 0;
+ visibility: hidden;
+ }
+
+ .sidebarLogo_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-styles-module {
+ display: flex !important;
+ align-items: center;
+ margin: 0 var(--ifm-navbar-padding-horizontal);
+ min-height: var(--ifm-navbar-height);
+ max-height: var(--ifm-navbar-height);
+ color: inherit !important;
+ text-decoration: none !important;
+ }
+
+ .sidebarLogo_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-styles-module img {
+ margin-right: 0.5rem;
+ height: 2rem;
+ }
+}
+
+.sidebarLogo_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-styles-module {
+ display: none;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+@media (min-width: 997px) {
+ .expandButton_node_modules-\@docusaurus-theme-classic-lib-theme-DocRoot-Layout-Sidebar-ExpandButton-styles-module {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 100%;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ transition: background-color var(--ifm-transition-fast) ease;
+ background-color: var(--docusaurus-collapse-button-bg);
+ }
+
+ .expandButton_node_modules-\@docusaurus-theme-classic-lib-theme-DocRoot-Layout-Sidebar-ExpandButton-styles-module:hover,
+ .expandButton_node_modules-\@docusaurus-theme-classic-lib-theme-DocRoot-Layout-Sidebar-ExpandButton-styles-module:focus {
+ background-color: var(--docusaurus-collapse-button-bg-hover);
+ }
+
+ .expandButtonIcon_node_modules-\@docusaurus-theme-classic-lib-theme-DocRoot-Layout-Sidebar-ExpandButton-styles-module {
+ transform: rotate(0);
+ }
+
+ [dir='rtl'] .expandButtonIcon_node_modules-\@docusaurus-theme-classic-lib-theme-DocRoot-Layout-Sidebar-ExpandButton-styles-module {
+ transform: rotate(180deg);
+ }
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+:root {
+ --doc-sidebar-width: 300px;
+ --doc-sidebar-hidden-width: 30px;
+}
+
+.docSidebarContainer_node_modules-\@docusaurus-theme-classic-lib-theme-DocRoot-Layout-Sidebar-styles-module {
+ display: none;
+}
+
+@media (min-width: 997px) {
+ .docSidebarContainer_node_modules-\@docusaurus-theme-classic-lib-theme-DocRoot-Layout-Sidebar-styles-module {
+ display: block;
+ width: var(--doc-sidebar-width);
+ margin-top: calc(-1 * var(--ifm-navbar-height));
+ border-right: 1px solid var(--ifm-toc-border-color);
+ will-change: width;
+ transition: width var(--ifm-transition-fast) ease;
+ clip-path: inset(0);
+ }
+
+ .docSidebarContainerHidden_node_modules-\@docusaurus-theme-classic-lib-theme-DocRoot-Layout-Sidebar-styles-module {
+ width: var(--doc-sidebar-hidden-width);
+ cursor: pointer;
+ }
+
+ .sidebarViewport_node_modules-\@docusaurus-theme-classic-lib-theme-DocRoot-Layout-Sidebar-styles-module {
+ top: 0;
+ position: sticky;
+ height: 100%;
+ max-height: 100vh;
+ }
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.docMainContainer_node_modules-\@docusaurus-theme-classic-lib-theme-DocRoot-Layout-Main-styles-module {
+ display: flex;
+ width: 100%;
+}
+
+@media (min-width: 997px) {
+ .docMainContainer_node_modules-\@docusaurus-theme-classic-lib-theme-DocRoot-Layout-Main-styles-module {
+ flex-grow: 1;
+ max-width: calc(100% - var(--doc-sidebar-width));
+ }
+
+ .docMainContainerEnhanced_node_modules-\@docusaurus-theme-classic-lib-theme-DocRoot-Layout-Main-styles-module {
+ max-width: calc(100% - var(--doc-sidebar-hidden-width));
+ }
+
+ .docItemWrapperEnhanced_node_modules-\@docusaurus-theme-classic-lib-theme-DocRoot-Layout-Main-styles-module {
+ max-width: calc(
+ var(--ifm-container-width) + var(--doc-sidebar-width)
+ ) !important;
+ }
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.docRoot_node_modules-\@docusaurus-theme-classic-lib-theme-DocRoot-Layout-styles-module {
+ display: flex;
+ width: 100%;
+}
+
+.docsWrapper_node_modules-\@docusaurus-theme-classic-lib-theme-DocRoot-Layout-styles-module {
+ display: flex;
+ flex: 1 0 auto;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.dropdownNavbarItemMobile_node_modules-\@docusaurus-theme-classic-lib-theme-NavbarItem-DropdownNavbarItem-styles-module {
+ cursor: pointer;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.iconLanguage_node_modules-\@docusaurus-theme-classic-lib-theme-NavbarItem-LocaleDropdownNavbarItem-styles-module {
+ vertical-align: text-bottom;
+ margin-right: 5px;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/*
+Workaround to avoid rendering empty search container
+See https://github.com/facebook/docusaurus/pull/9385
+*/
+.navbarSearchContainer_node_modules-\@docusaurus-theme-classic-lib-theme-Navbar-Search-styles-module:empty {
+ display: none;
+}
+
+@media (max-width: 996px) {
+ .navbarSearchContainer_node_modules-\@docusaurus-theme-classic-lib-theme-Navbar-Search-styles-module {
+ position: absolute;
+ right: var(--ifm-navbar-padding-horizontal);
+ }
+}
+
+@media (min-width: 997px) {
+ .navbarSearchContainer_node_modules-\@docusaurus-theme-classic-lib-theme-Navbar-Search-styles-module {
+ padding: var(--ifm-navbar-item-padding-vertical)
+ var(--ifm-navbar-item-padding-horizontal);
+ }
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.navbarHideable_node_modules-\@docusaurus-theme-classic-lib-theme-Navbar-Layout-styles-module {
+ transition: transform var(--ifm-transition-fast) ease;
+}
+
+.navbarHidden_node_modules-\@docusaurus-theme-classic-lib-theme-Navbar-Layout-styles-module {
+ transform: translate3d(0, calc(-100% - 2px), 0);
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/*
+Hide color mode toggle in small viewports
+ */
+@media (max-width: 996px) {
+ .colorModeToggle_node_modules-\@docusaurus-theme-classic-lib-theme-Navbar-Content-styles-module {
+ display: none;
+ }
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.errorBoundaryError_node_modules-\@docusaurus-theme-common-lib-utils-errorBoundaryUtils-module {
+ white-space: pre-wrap;
+ color: red;
+}
+
+.errorBoundaryFallback_node_modules-\@docusaurus-theme-common-lib-utils-errorBoundaryUtils-module {
+ color: red;
+ padding: 0.55rem;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.footerLogoLink_node_modules-\@docusaurus-theme-classic-lib-theme-Footer-Logo-styles-module {
+ opacity: 0.5;
+ transition: opacity var(--ifm-transition-fast)
+ var(--ifm-transition-timing-default);
+}
+
+.footerLogoLink_node_modules-\@docusaurus-theme-classic-lib-theme-Footer-Logo-styles-module:hover {
+ opacity: 1;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+body:not(.navigation-with-keyboard) *:not(input):focus {
+ outline: none;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+#__docusaurus-base-url-issue-banner-container {
+ display: none;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/*
+When the navbar is sticky, ensure that on anchor click,
+the browser does not scroll that anchor behind the navbar
+See https://twitter.com/JoshWComeau/status/1332015868725891076
+ */
+.anchorWithStickyNavbar_node_modules-\@docusaurus-theme-classic-lib-theme-Heading-styles-module {
+ scroll-margin-top: calc(var(--ifm-navbar-height) + 0.5rem);
+}
+
+.anchorWithHideOnScrollNavbar_node_modules-\@docusaurus-theme-classic-lib-theme-Heading-styles-module {
+ scroll-margin-top: 0.5rem;
+}
+
+.hash-link {
+ opacity: 0;
+ padding-left: 0.5rem;
+ transition: opacity var(--ifm-transition-fast);
+ -webkit-user-select: none;
+ user-select: none;
+}
+
+.hash-link::before {
+ content: '#';
+}
+
+.hash-link:focus,
+*:hover > .hash-link {
+ opacity: 1;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.codeBlockContainer_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Container-styles-module {
+ background: var(--prism-background-color);
+ color: var(--prism-color);
+ margin-bottom: var(--ifm-leading);
+ box-shadow: var(--ifm-global-shadow-lw);
+ border-radius: var(--ifm-code-border-radius);
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.codeBlockContent_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module {
+ position: relative;
+ /* rtl:ignore */
+ direction: ltr;
+ border-radius: inherit;
+}
+
+.codeBlockTitle_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module {
+ border-bottom: 1px solid var(--ifm-color-emphasis-300);
+ font-size: var(--ifm-code-font-size);
+ font-weight: 500;
+ padding: 0.75rem var(--ifm-pre-padding);
+ border-top-left-radius: inherit;
+ border-top-right-radius: inherit;
+}
+
+.codeBlock_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module {
+ --ifm-pre-background: var(--prism-background-color);
+ margin: 0;
+ padding: 0;
+}
+
+.codeBlockTitle_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module + .codeBlockContent_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module .codeBlock_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+
+.codeBlockStandalone_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module {
+ padding: 0;
+}
+
+.codeBlockLines_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module {
+ font: inherit;
+ /* rtl:ignore */
+ float: left;
+ min-width: 100%;
+ padding: var(--ifm-pre-padding);
+}
+
+.codeBlockLinesWithNumbering_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module {
+ display: table;
+ padding: var(--ifm-pre-padding) 0;
+}
+
+@media print {
+ .codeBlockLines_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module {
+ white-space: pre-wrap;
+ }
+}
+
+.buttonGroup_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module {
+ display: flex;
+ column-gap: 0.2rem;
+ position: absolute;
+ /* rtl:ignore */
+ right: calc(var(--ifm-pre-padding) / 2);
+ top: calc(var(--ifm-pre-padding) / 2);
+}
+
+.buttonGroup_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module button {
+ display: flex;
+ align-items: center;
+ background: var(--prism-background-color);
+ color: var(--prism-color);
+ border: 1px solid var(--ifm-color-emphasis-300);
+ border-radius: var(--ifm-global-radius);
+ padding: 0.4rem;
+ line-height: 0;
+ transition: opacity var(--ifm-transition-fast) ease-in-out;
+ opacity: 0;
+}
+
+.buttonGroup_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module button:focus-visible,
+.buttonGroup_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module button:hover {
+ opacity: 1 !important;
+}
+
+.theme-code-block:hover .buttonGroup_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module button {
+ opacity: 0.4;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/* Intentionally has zero specificity, so that to be able to override
+the background in custom CSS file due bug https://github.com/facebook/docusaurus/issues/3678 */
+:where(:root) {
+ --docusaurus-highlighted-code-line-bg: rgb(72 77 91);
+}
+
+:where([data-theme='dark']) {
+ --docusaurus-highlighted-code-line-bg: rgb(100 100 100);
+}
+
+.theme-code-block-highlighted-line {
+ background-color: var(--docusaurus-highlighted-code-line-bg);
+ display: block;
+ margin: 0 calc(-1 * var(--ifm-pre-padding));
+ padding: 0 var(--ifm-pre-padding);
+}
+
+.codeLine_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Line-styles-module {
+ display: table-row;
+ counter-increment: line-count;
+}
+
+.codeLineNumber_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Line-styles-module {
+ display: table-cell;
+ text-align: right;
+ width: 1%;
+ position: sticky;
+ left: 0;
+ padding: 0 var(--ifm-pre-padding);
+ background: var(--ifm-pre-background);
+ overflow-wrap: normal;
+}
+
+.codeLineNumber_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Line-styles-module::before {
+ content: counter(line-count);
+ opacity: 0.4;
+}
+
+.theme-code-block-highlighted-line .codeLineNumber_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Line-styles-module::before {
+ opacity: 0.8;
+}
+
+.codeLineContent_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Line-styles-module {
+ padding-right: var(--ifm-pre-padding);
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.theme-code-block:hover .copyButtonCopied_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-CopyButton-styles-module {
+ opacity: 1 !important;
+}
+
+.copyButtonIcons_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-CopyButton-styles-module {
+ position: relative;
+ width: 1.125rem;
+ height: 1.125rem;
+}
+
+.copyButtonIcon_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-CopyButton-styles-module,
+.copyButtonSuccessIcon_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-CopyButton-styles-module {
+ position: absolute;
+ top: 0;
+ left: 0;
+ fill: currentColor;
+ opacity: inherit;
+ width: inherit;
+ height: inherit;
+ transition: all var(--ifm-transition-fast) ease;
+}
+
+.copyButtonSuccessIcon_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-CopyButton-styles-module {
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%) scale(0.33);
+ opacity: 0;
+ color: #00d600;
+}
+
+.copyButtonCopied_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-CopyButton-styles-module .copyButtonIcon_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-CopyButton-styles-module {
+ transform: scale(0.33);
+ opacity: 0;
+}
+
+.copyButtonCopied_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-CopyButton-styles-module .copyButtonSuccessIcon_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-CopyButton-styles-module {
+ transform: translate(-50%, -50%) scale(1);
+ opacity: 1;
+ transition-delay: 0.075s;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.wordWrapButtonIcon_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-WordWrapButton-styles-module {
+ width: 1.2rem;
+ height: 1.2rem;
+}
+
+.wordWrapButtonEnabled_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-WordWrapButton-styles-module .wordWrapButtonIcon_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-WordWrapButton-styles-module {
+ color: var(--ifm-color-primary);
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/*
+CSS variables, meant to be overridden by final theme
+ */
+.details_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module {
+ --docusaurus-details-summary-arrow-size: 0.38rem;
+ --docusaurus-details-transition: transform 200ms ease;
+ --docusaurus-details-decoration-color: gray;
+}
+
+.details_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module > summary {
+ position: relative;
+ cursor: pointer;
+ list-style: none;
+ padding-left: 1rem;
+}
+
+/* TODO: deprecation, need to remove this after Safari will support `::marker` */
+.details_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module > summary::-webkit-details-marker {
+ display: none;
+}
+
+.details_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module > summary::before {
+ position: absolute;
+ top: 0.45rem;
+ left: 0;
+
+ /* CSS-only Arrow */
+ content: '';
+ border-width: var(--docusaurus-details-summary-arrow-size);
+ border-style: solid;
+ border-color: transparent transparent transparent
+ var(--docusaurus-details-decoration-color);
+
+ /* Arrow rotation anim */
+ transform: rotate(0deg);
+ transition: var(--docusaurus-details-transition);
+ transform-origin: calc(var(--docusaurus-details-summary-arrow-size) / 2) 50%;
+}
+
+/* When JS disabled/failed to load: we use the open property for arrow animation: */
+.details_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module[open]:not(.isBrowser_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module) > summary::before,
+
+.details_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module[data-collapsed='false'].isBrowser_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module > summary::before {
+ transform: rotate(90deg);
+}
+
+.collapsibleContent_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module {
+ margin-top: 1rem;
+ border-top: 1px solid var(--docusaurus-details-decoration-color);
+ padding-top: 1rem;
+}
+
+.collapsibleContent_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module p:last-child {
+ margin-bottom: 0;
+}
+
+.details_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module > summary > p:last-child {
+ margin-bottom: 0;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.details_node_modules-\@docusaurus-theme-classic-lib-theme-Details-styles-module {
+ --docusaurus-details-decoration-color: var(--ifm-alert-border-color);
+ --docusaurus-details-transition: transform var(--ifm-transition-fast) ease;
+ margin: 0 0 var(--ifm-spacing-vertical);
+ border: 1px solid var(--ifm-alert-border-color);
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.containsTaskList_node_modules-\@docusaurus-theme-classic-lib-theme-MDXComponents-Ul-styles-module {
+ list-style: none;
+}
+
+:not(.containsTaskList_node_modules-\@docusaurus-theme-classic-lib-theme-MDXComponents-Ul-styles-module > li) > .containsTaskList_node_modules-\@docusaurus-theme-classic-lib-theme-MDXComponents-Ul-styles-module {
+ padding-left: 0;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.img_node_modules-\@docusaurus-theme-classic-lib-theme-MDXComponents-Img-styles-module {
+ height: auto;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.admonition_node_modules-\@docusaurus-theme-classic-lib-theme-Admonition-Layout-styles-module {
+ margin-bottom: 1em;
+}
+
+.admonitionHeading_node_modules-\@docusaurus-theme-classic-lib-theme-Admonition-Layout-styles-module {
+ font: var(--ifm-heading-font-weight) var(--ifm-h5-font-size) /
+ var(--ifm-heading-line-height) var(--ifm-heading-font-family);
+ text-transform: uppercase;
+}
+
+/* Heading alone without content (does not handle fragment content) */
+.admonitionHeading_node_modules-\@docusaurus-theme-classic-lib-theme-Admonition-Layout-styles-module:not(:last-child) {
+ margin-bottom: 0.3rem;
+}
+
+.admonitionHeading_node_modules-\@docusaurus-theme-classic-lib-theme-Admonition-Layout-styles-module code {
+ text-transform: none;
+}
+
+.admonitionIcon_node_modules-\@docusaurus-theme-classic-lib-theme-Admonition-Layout-styles-module {
+ display: inline-block;
+ vertical-align: middle;
+ margin-right: 0.4em;
+}
+
+.admonitionIcon_node_modules-\@docusaurus-theme-classic-lib-theme-Admonition-Layout-styles-module svg {
+ display: inline-block;
+ height: 1.6em;
+ width: 1.6em;
+ fill: var(--ifm-alert-foreground-color);
+}
+
+.admonitionContent_node_modules-\@docusaurus-theme-classic-lib-theme-Admonition-Layout-styles-module > :last-child {
+ margin-bottom: 0;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.breadcrumbHomeIcon_node_modules-\@docusaurus-theme-classic-lib-theme-DocBreadcrumbs-Items-Home-styles-module {
+ position: relative;
+ top: 1px;
+ vertical-align: top;
+ height: 1.1rem;
+ width: 1.1rem;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.breadcrumbsContainer_node_modules-\@docusaurus-theme-classic-lib-theme-DocBreadcrumbs-styles-module {
+ --ifm-breadcrumb-size-multiplier: 0.8;
+ margin-bottom: 0.8rem;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+.docItemContainer_node_modules-\@docusaurus-theme-classic-lib-theme-DocItem-Layout-styles-module header + *,
+.docItemContainer_node_modules-\@docusaurus-theme-classic-lib-theme-DocItem-Layout-styles-module article > *:first-child {
+ margin-top: 0;
+}
+
+@media (min-width: 997px) {
+ .docItemCol_node_modules-\@docusaurus-theme-classic-lib-theme-DocItem-Layout-styles-module {
+ max-width: 75% !important;
+ }
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+html,
+body {
+ height: 100%;
+}
+
+.mainWrapper_node_modules-\@docusaurus-theme-classic-lib-theme-Layout-styles-module {
+ flex: 1 0 auto;
+ display: flex;
+ flex-direction: column;
+}
+
+/* Docusaurus-specific utility class */
+.docusaurus-mt-lg {
+ margin-top: 3rem;
+}
+
+#__docusaurus {
+ min-height: 100%;
+ display: flex;
+ flex-direction: column;
+}
+
+.small_portrait_card_src-components-about-styles-module {
+ width: 279px;
+ height: 400px;
+ background-color: white;
+ color: var(--ifm-color-primary-p2);
+ border-radius: 8px;
+ box-shadow: 0px 0px 8px 1px #c8c8c7;
+ padding: var(--ifm-spacing-lg) var(--ifm-spacing-xs);
+ margin-bottom: var(--ifm-spacing-xl);
+}
+
+.small_portrait_card_src-components-about-styles-module:hover {
+ border: solid 1px gray;
+ cursor: pointer;
+ -webkit-text-decoration: #0000EE underline;
+ text-decoration: #0000EE underline;
+}
+
+
+.value_text_src-components-about-styles-module p {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 20px;
+ letter-spacing: 0.25px;
+ color: var(--ifm-text-color-on-primary-p1);
+ text-align: justify;
+}
+
+div .row_src-components-about-styles-module {
+ margin-left: 0;
+ margin-right: 0;
+}
+
+.bio_container_src-components-about-styles-module {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 24px;
+ letter-spacing: 0.5px;
+ color: var(--ifm-color-primary-p2);
+}
+
+.small_card_complete_name_src-components-about-styles-module {
+ font-size: 24px;
+ font-family: var(--ifm-font-family-roboto);
+ color: var(--ifm-color-primary-p2);
+ font-style: normal;
+ font-weight: 400;
+ line-height: 24px;
+ letter-spacing: 0.15px;
+ margin: var(--ifm-spacing-xs) 0;
+ width: 100%
+}
+
+.small_card_position_src-components-about-styles-module {
+ font-size: 16px;
+ font-family: var(--ifm-font-family-roboto);
+ color: var(---ifm-text-color);
+ font-style: normal;
+ font-weight: 400;
+ line-height: 24px;
+ letter-spacing: 0.5px;
+ color: var(--ifm-color-primary-p2);
+ height: 2em;
+ text-align: center;
+}
+
+.large_card_complete_name_src-components-about-styles-module {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 28px;
+ color: var(---ifm-text-color);
+ font-style: normal;
+ font-weight: 400;
+ line-height: 40px;
+ color: var(--ifm-color-primary-p2);
+}
+
+.large_card_position_src-components-about-styles-module {
+ font-size: var(--ifm--font-size-normal);
+ font-family: var(--ifm-font-family-roboto);
+ color: var(--ifm-color-primary-p2);
+ font-style: normal;
+ font-weight: 400;
+ line-height: 24px; /* 133.333% */
+ letter-spacing: 0.5px;
+}
+
+a {
+ color: var(--ifm-color-primary-p2);
+}
+
+div .large_card_position_src-components-about-styles-module {
+ color: var(--ifm-color-primary-p2);
+}
+
+.social_icons_src-components-about-styles-module {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+.GitHubName_src-components-about-styles-module {
+ font-size: 16px;
+ font-family: var(--ifm-font-family-roboto);
+ font-style: normal;
+ font-weight: 400;
+ line-height: 24px; /* 133.333% */
+ letter-spacing: 0.5px;
+ color: var(--ifm-color-primary-p2);
+}
+
+div .join_the_team_title_src-components-about-styles-module {
+ color: var(--ifm-color-secondary-s2);
+}
+
+.join_the_team_text_src-components-about-styles-module {
+ margin-bottom: var(--ifm-spacing-2xl);
+}
+
+div .join_the_team_text_src-components-about-styles-module {
+ color: var(--ifm-color-secondary-s2);
+}
+
+.avatar_src-components-about-styles-module {
+ filter: grayscale(1);
+ border-radius: 50%;
+ overflow: hidden;
+ height: 160px;
+ width: 160px;
+}
+
+.distinction_icon_src-components-about-styles-module {
+ vertical-align: middle;
+ padding-right: 5px;
+}
+
+@media only screen and (max-width: 996px) {
+ /*Mobile*/
+ .value_card_src-components-about-styles-module {
+ height: 420px;
+ width: 264px;
+ padding: var(--ifm-spacing-lg) var(--ifm-spacing-md);
+ border-radius: 8px;
+ box-shadow: 0px 0px 8px 1px #c8c8c7;
+ background-color: var(--ifm-color-primary-p1);
+ margin-bottom: var(--ifm-spacing-xl);
+ }
+
+ .value_header_src-components-about-styles-module {
+ font-family: var(--ifm-font-family-rubik-one);
+ font-size: 20px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 20px;
+ text-align: center;
+ margin-bottom: var(--ifm-spacing-xl);
+ color: var(--ifm-text-color-on-primary-p1);
+ }
+
+ .value_text_src-components-about-styles-module p {
+ text-align: justify;
+ padding: 0;
+ }
+
+ .large_portrait_card_src-components-about-styles-module {
+ width: 100%;
+ height: 100%;
+ padding: var(--ifm-spacing-xl) var(--ifm-spacing-xl);
+ }
+
+ .large_portrait_card_src-components-about-styles-module p {
+ text-align: justify;
+ }
+
+ .subteam_container_src-components-about-styles-module {
+ margin: var(--ifm-spacing-3xl) var(--ifm-spacing-2xl);
+ }
+
+ .team_description_src-components-about-styles-module {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 18px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 150%;
+ text-align: center;
+ }
+
+ .large_card_complete_name_src-components-about-styles-module {
+ text-align: center;
+ }
+
+ .large_card_position_src-components-about-styles-module {
+ text-align: center;
+ }
+}
+
+@media only screen and (min-width: 996px) {
+ /*Desktop*/
+ .value_card_src-components-about-styles-module {
+ height: 460px;
+ width: 264px;
+ padding: var(--ifm-spacing-2xl) var(--ifm-spacing-lg);
+ border-radius: 8px;
+ box-shadow: 0px 0px 8px 1px #c8c8c7;
+ background-color: var(--ifm-color-primary-p1);
+ margin-bottom: var(--ifm-spacing-xl);
+ }
+
+ .value_header_src-components-about-styles-module {
+ font-family: var(--ifm-font-family-rubik-one);
+ font-size: var(--ifm-font-size-secondary-title);
+ font-style: normal;
+ font-weight: 400;
+ line-height: 28px;
+ text-align: center;
+ margin-bottom: var(--ifm-spacing-xl);
+ color: var(--ifm-text-color-on-primary-p1);
+ }
+
+ .large_portrait_card_src-components-about-styles-module {
+ width: 1000px;
+ padding: var(--ifm-spacing-xl) var(--ifm-spacing-2xl);
+ }
+
+ .subteam_container_src-components-about-styles-module {
+ margin: var(--ifm-spacing-5xl) var(--ifm-spacing-6xl);
+ }
+
+ .team_description_src-components-about-styles-module {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 22px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 28px;
+ text-align: center;
+ }
+}
+
+.group_photo_container_src-components-careers-styles-module {
+ margin-top: var(--ifm-spacing-2xl);
+ padding: 0;
+}
+
+.interview_picture_src-components-careers-styles-module {
+ width: 100%;
+ height: auto;
+}
+
+.picture_container_src-components-careers-styles-module {
+ position: relative;
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.play_interview_src-components-careers-styles-module {
+ height: 60px;
+ width: 60px;
+ position: absolute;
+ top: 70%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ -ms-transform: translate(-50%, -50%);
+}
+
+.link_to_WTJ_src-components-careers-styles-module {
+ background-color: var(--ifm-color-secondary-s2);
+ color: white;
+ width: 358px;
+ font-weight: 700;
+}
+
+.interview_card_src-components-careers-styles-module {
+ width: 280px;
+ height: 300px;
+ background-color: var(--ifm-background-color);
+ border-radius: 10px;
+ box-shadow: 0px 0px 8px 1px #c8c8c7;
+ padding: var(--ifm-spacing-sm);
+ text-align: center;
+ margin-bottom: var(--ifm-spacing-xl);
+}
+
+.interview_picture_src-components-careers-styles-module {
+ width: 284px;
+}
+
+.interviews_container_src-components-careers-styles-module {
+ margin: var(--ifm-spacing-2xl) 0;
+}
+
+.interview_name_src-components-careers-styles-module {
+ color: var(--ifm-text-color);
+ text-align: center;
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 22px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 128.571%;
+ margin-top: var(--ifm-spacing-lg);
+}
+
+.interview_position_src-components-careers-styles-module {
+ color: var(--ifm-text-color);
+ text-align: center;
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 133.333%;
+ letter-spacing: 0.5px;
+}
+
+@media only screen and (max-width: 996px) {
+ /*Mobile*/
+ .join_the_team_text_src-components-careers-styles-module {
+ text-align: center;
+ font-size: 18px;
+ font-family: var(--ifm-font-family-roboto);
+ color: var(--ifm-color-primary-p2);
+ text-align: center;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 36px;
+ }
+
+ .join_the_team_container_src-components-careers-styles-module {
+ margin-top: var(--ifm-spacing-xl);
+ }
+}
+
+@media only screen and (min-width: 996px) {
+ /*Desktop*/
+ .join_the_team_text_src-components-careers-styles-module {
+ text-align: center;
+ font-size: 28px;
+ font-family: var(--ifm-font-family-roboto);
+ color: var(--ifm-color-primary-p2);
+ text-align: center;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 36px;
+ margin-bottom: var(--ifm-spacing-3xl);
+ }
+
+ .join_the_team_container_src-components-careers-styles-module {
+ margin-top: var(--ifm-spacing-5xl);
+ }
+}
+
+.send_button_src-components-contact-styles-module {
+ width: 258px;
+ height: 59px;
+ background: var(--ifm-color-blue-jupyter);
+}
+
+
+
+.contact_form_src-components-contact-styles-module {
+ margin-top: var(--ifm-spacing-xl);
+}
+
+.form_label_src-components-contact-styles-module {
+ font-size: 12px;
+ color: var(--ifm-text-color);
+ background-color: var(--ifm-background-color);
+}
+
+
+
+@media only screen and (max-width: 996px) {
+ /*Mobile*/
+ .small_input_src-components-contact-styles-module {
+ width: 300px;
+ height: 56px;
+ border-radius: 4px;
+ }
+
+ .large_input_src-components-contact-styles-module {
+ width: 300px;
+ height: 220px;
+ border-radius: 4px;
+ }
+ .send_button_container_src-components-contact-styles-module {
+ height: 59px;
+ width: 300px;
+ margin: var(--ifm-spacing-2xl) 0;
+ }
+
+ }
+
+ @media only screen and (min-width: 996px) {
+ /*Desktop*/
+ .small_input_src-components-contact-styles-module {
+ width: 508px;
+ height: 56px;
+ border-radius: 4px;
+ }
+
+ .large_input_src-components-contact-styles-module {
+ width: 508px;
+ height: 220px;
+ border-radius: 4px;
+ }
+ .send_button_container_src-components-contact-styles-module {
+ height: 59px;
+ width: 508px;
+ margin: var(--ifm-spacing-2xl) 0;
+ }
+ }
+.small_project_card_src-components-fundable-styles-module {
+ border: solid 0.5px;
+ width: 600px;
+ height: 200px;
+ margin: var(--ifm-spacing-xl) 0;
+}
+
+.project_category_header_src-components-fundable-styles-module {
+ font-family: var(--ifm-font-family-rubik-one);
+ font-style: normal;
+ font-weight: 400;
+ line-height: 20px;
+ text-align: center;
+ margin-bottom: var(--ifm-spacing-xl);
+ color: var(--ifm-color-secondary-s3);
+ padding: 20px 0;
+ text-align: left;
+}
+.project_title_src-components-fundable-styles-module {
+ color: var(--ifm-text-color-main-title);
+ font-family: var(--ifm-font-family-bebas-neue);
+ font-size: 48px;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 150%; /* 72px */
+ letter-spacing: 2.112px;
+ text-align: left;
+ padding: 0;
+}
+.project_catch_up_phrase_src-components-fundable-styles-module {
+ font-family: var(--ifm-font-family-bebas-neue);
+ font-size: 20px;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 24px; /* 150% */
+ letter-spacing: 0.15px;
+ color: var(--ifm-color-secondary-s3);
+}
+
+@media only screen and (max-width: 996px) {
+ /*Mobile*/
+ .project_category_header_src-components-fundable-styles-module {
+ font-size: 20px;
+}
+}
+
+@media only screen and (min-width: 996px) {
+ /*Desktop*/
+ .project_category_header_src-components-fundable-styles-module {
+ /*font-size: var(--ifm-font-size-secondary-title);*/
+ font-size: 28px;
+}
+}
+.h2_custom_src-components-home-Hero-styles-module {
+ color: var(--ifm-color-blue-jupyter);
+}
+
+.sub_header_src-components-home-Hero-styles-module {
+ text-align: left;
+}
+
+.hero_container_src-components-home-Hero-styles-module {
+ background-color: var(--ifm-color-primary-p0);
+ padding-bottom: var(--ifm-spacing-3xl);
+}
+
+@media only screen and (max-width: 996px) {
+ /*Mobile*/
+ .logos_carousel_src-components-home-Hero-styles-module {
+ display: none;
+ }
+}
+
+@media only screen and (min-width: 996px) {
+ /*Desktop*/
+ .table_with_8_customers_src-components-home-Hero-styles-module {
+ margin-bottom: var(--ifm-spacing-xl);
+ }
+
+ .customer_logo_src-components-home-Hero-styles-module {
+ filter: grayscale(1);
+ width: 100px;
+ }
+
+ .worked_with_src-components-home-Hero-styles-module {
+ font-size: 24px;
+ font-weight: 200;
+ font-family: var(--ifm-font-family-rubik-one);
+ color: var(--ifm-color-primary-p2);
+ text-align: center;
+ margin: var(--ifm-spacing-2xl) 0;
+ }
+}
+
+/* Slider */
+.slick-slider
+{
+ position: relative;
+
+ display: block;
+ box-sizing: border-box;
+
+ -webkit-user-select: none;
+ user-select: none;
+
+ -webkit-touch-callout: none;
+ -khtml-user-select: none;
+ touch-action: pan-y;
+ -webkit-tap-highlight-color: transparent;
+}
+
+.slick-list
+{
+ position: relative;
+
+ display: block;
+ overflow: hidden;
+
+ margin: 0;
+ padding: 0;
+}
+.slick-list:focus
+{
+ outline: none;
+}
+.slick-list.dragging
+{
+ cursor: pointer;
+ cursor: hand;
+}
+
+.slick-slider .slick-track,
+.slick-slider .slick-list
+{
+ transform: translate3d(0, 0, 0);
+}
+
+.slick-track
+{
+ position: relative;
+ top: 0;
+ left: 0;
+
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+.slick-track:before,
+.slick-track:after
+{
+ display: table;
+
+ content: '';
+}
+.slick-track:after
+{
+ clear: both;
+}
+.slick-loading .slick-track
+{
+ visibility: hidden;
+}
+
+.slick-slide
+{
+ display: none;
+ float: left;
+
+ height: 100%;
+ min-height: 1px;
+}
+[dir='rtl'] .slick-slide
+{
+ float: right;
+}
+.slick-slide img
+{
+ display: block;
+}
+.slick-slide.slick-loading img
+{
+ display: none;
+}
+.slick-slide.dragging img
+{
+ pointer-events: none;
+}
+.slick-initialized .slick-slide
+{
+ display: block;
+}
+.slick-loading .slick-slide
+{
+ visibility: hidden;
+}
+.slick-vertical .slick-slide
+{
+ display: block;
+
+ height: auto;
+
+ border: 1px solid transparent;
+}
+.slick-arrow.slick-hidden {
+ display: none;
+}
+
+@charset 'UTF-8';
+/* Slider */
+.slick-loading .slick-list
+{
+ background: #fff url(data:image/gif;base64,R0lGODlhIAAgAPUAAP///wAAAPr6+sTExOjo6PDw8NDQ0H5+fpqamvb29ubm5vz8/JKSkoaGhuLi4ri4uKCgoOzs7K6urtzc3D4+PlZWVmBgYHx8fKioqO7u7kpKSmxsbAwMDAAAAM7OzsjIyNjY2CwsLF5eXh4eHkxMTLCwsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH+GkNyZWF0ZWQgd2l0aCBhamF4bG9hZC5pbmZvACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAIAAgAAAG/0CAcEgkFjgcR3HJJE4SxEGnMygKmkwJxRKdVocFBRRLfFAoj6GUOhQoFAVysULRjNdfQFghLxrODEJ4Qm5ifUUXZwQAgwBvEXIGBkUEZxuMXgAJb1dECWMABAcHDEpDEGcTBQMDBQtvcW0RbwuECKMHELEJF5NFCxm1AAt7cH4NuAOdcsURy0QCD7gYfcWgTQUQB6Zkr66HoeDCSwIF5ucFz3IC7O0CC6zx8YuHhW/3CvLyfPX4+OXozKnDssBdu3G/xIHTpGAgOUPrZimAJCfDPYfDin2TQ+xeBnWbHi37SC4YIYkQhdy7FvLdpwWvjA0JyU/ISyIx4xS6sgfkNS4me2rtVKkgw0JCb8YMZdjwqMQ2nIY8BbcUQNVCP7G4MQq1KRivR7tiDEuEFrggACH5BAAKAAEALAAAAAAgACAAAAb/QIBwSCQmNBpCcckkEgREA4ViKA6azM8BEZ1Wh6LOBls0HA5fgJQ6HHQ6InKRcWhA1d5hqMMpyIkOZw9Ca18Qbwd/RRhnfoUABRwdI3IESkQFZxB4bAdvV0YJQwkDAx9+bWcECQYGCQ5vFEQCEQoKC0ILHqUDBncCGA5LBiHCAAsFtgqoQwS8Aw64f8m2EXdFCxO8INPKomQCBgPMWAvL0n/ff+jYAu7vAuxy8O/myvfX8/f7/Arq+v0W0HMnr9zAeE0KJlQkJIGCfE0E+PtDq9qfDMogDkGmrIBCbNQUZIDosNq1kUsEZJBW0dY/b0ZsLViQIMFMW+RKKgjFzp4fNokPIdki+Y8JNVxA79jKwHAI0G9JGw5tCqDWTiFRhVhtmhVA16cMJTJ1OnVIMo1cy1KVI5NhEAAh+QQACgACACwAAAAAIAAgAAAG/0CAcEgkChqNQnHJJCYWRMfh4CgamkzFwBOdVocNCgNbJAwGhKGUOjRQKA1y8XOGAtZfgIWiSciJBWcTQnhCD28Qf0UgZwJ3XgAJGhQVcgKORmdXhRBvV0QMY0ILCgoRmIRnCQIODgIEbxtEJSMdHZ8AGaUKBXYLIEpFExZpAG62HRRFArsKfn8FIsgjiUwJu8FkJLYcB9lMCwUKqFgGHSJ5cnZ/uEULl/CX63/x8KTNu+RkzPj9zc/0/Cl4V0/APDIE6x0csrBJwybX9DFhBhCLgAilIvzRVUriKHGlev0JtyuDvmsZUZlcIiCDnYu7KsZ0UmrBggRP7n1DqcDJEzciOgHwcwTyZEUmIKEMFVIqgyIjpZ4tjdTxqRCMPYVMBYDV6tavUZ8yczpkKwBxHsVWtaqo5tMgACH5BAAKAAMALAAAAAAgACAAAAb/QIBwSCQuBgNBcck0FgvIQtHRZCYUGSJ0IB2WDo9qUaBQKIXbLsBxOJTExUh5mB4iDo0zXEhWJNBRQgZtA3tPZQsAdQINBwxwAnpCC2VSdQNtVEQSEkOUChGSVwoLCwUFpm0QRAMVFBQTQxllCqh0kkIECF0TG68UG2O0foYJDb8VYVa0alUXrxoQf1WmZnsTFA0EhgCJhrFMC5Hjkd57W0jpDsPDuFUDHfHyHRzstNN78PPxHOLk5dwcpBuoaYk5OAfhXHG3hAy+KgLkgNozqwzDbgWYJQyXsUwGXKNA6fnYMIO3iPeIpBwyqlSCBKUqEQk5E6YRmX2UdAT5kEnHKkQ5hXjkNqTPtKAARl1sIrGoxSFNuSEFMNWoVCxEpiqyRlQY165wEHELAgAh+QQACgAEACwAAAAAIAAgAAAG/0CAcEgsKhSLonJJTBIFR0GxwFwmFJlnlAgaTKpFqEIqFJMBhcEABC5GjkPz0KN2tsvHBH4sJKgdd1NHSXILah9tAmdCC0dUcg5qVEQfiIxHEYtXSACKnWoGXAwHBwRDGUcKBXYFi0IJHmQEEKQHEGGpCnp3AiW1DKFWqZNgGKQNA65FCwV8bQQHJcRtds9MC4rZitVgCQbf4AYEubnKTAYU6eoUGuSpu3fo6+ka2NrbgQAE4eCmS9xVAOW7Yq7IgA4Hpi0R8EZBhDshOnTgcOtfM0cAlTigILFDiAFFNjk8k0GZgAxOBozouIHIOyKbFixIkECmIyIHOEiEWbPJTTQ5FxcVOMCgzUVCWwAcyZJvzy45ADYVZNIwTlIAVfNB7XRVDLxEWLQ4E9JsKq+rTdsMyhcEACH5BAAKAAUALAAAAAAgACAAAAb/QIBwSCwqFIuicklMEgVHQVHKVCYUmWeUWFAkqtOtEKqgAsgFcDFyHJLNmbZa6x2Lyd8595h8C48RagJmQgtHaX5XZUYKQ4YKEYSKfVKPaUMZHwMDeQBxh04ABYSFGU4JBpsDBmFHdXMLIKofBEyKCpdgspsOoUsLXaRLCQMgwky+YJ1FC4POg8lVAg7U1Q5drtnHSw4H3t8HDdnZy2Dd4N4Nzc/QeqLW1bnM7rXuV9tEBhQQ5UoCbJDmWKBAQcMDZNhwRVNCYANBChZYEbkVCZOwASEcCDFQ4SEDIq6WTVqQIMECBx06iCACQQPBiSabHDqzRUTKARMhSFCDrc+WNQIcOoRw5+ZIHj8ADqSEQBQAwKKLhIzowEEeGKQ0owIYkPKjHihZoBKi0KFE01b4zg7h4y4IACH5BAAKAAYALAAAAAAgACAAAAb/QIBwSCwqFIuicklMEgVHQVHKVCYUmWeUWFAkqtOtEKqgAsgFcDFyHJLNmbZa6x2Lyd8595h8C48RagJmQgtHaX5XZUUJeQCGChGEin1SkGlubEhDcYdOAAWEhRlOC12HYUd1eqeRokOKCphgrY5MpotqhgWfunqPt4PCg71gpgXIyWSqqq9MBQPR0tHMzM5L0NPSC8PCxVUCyeLX38+/AFfXRA4HA+pjmoFqCAcHDQa3rbxzBRD1BwgcMFIlidMrAxYICHHA4N8DIqpsUWJ3wAEBChQaEBnQoB6RRr0uARjQocMAAA0w4nMz4IOaU0lImkSngYKFc3ZWyTwJAALGK4fnNA3ZOaQCBQ22wPgRQlSIAYwSfkHJMrQkTyEbKFzFydQq15ccOAjUEwQAIfkEAAoABwAsAAAAACAAIAAABv9AgHBILCoUi6JySUwSBUdBUcpUJhSZZ5RYUCSq060QqqACyAVwMXIcks2ZtlrrHYvJ3zn3mHwLjxFqAmZCC0dpfldlRQl5AIYKEYSKfVKQaW5sSENxh04ABYSFGU4LXYdhR3V6p5GiQ4oKmGCtjkymi2qGBZ+6eo+3g8KDvYLDxKrJuXNkys6qr0zNygvHxL/V1sVD29K/AFfRRQUDDt1PmoFqHgPtBLetvMwG7QMes0KxkkIFIQNKDhBgKvCh3gQiqmxt6NDBAAEIEAgUOHCgBBEH9Yg06uWAIQUABihQMACgBEUHTRwoUEOBIcqQI880OIDgm5ABDA8IgUkSwAAyij1/jejAARPPIQwONBCnBAJDCEOOCnFA8cOvEh1CEJEqBMIBEDaLcA3LJIEGDe/0BAEAIfkEAAoACAAsAAAAACAAIAAABv9AgHBILCoUi6JySUwSBUdBUcpUJhSZZ5RYUCSq060QqqACyAVwMXIcks2ZtlrrHYvJ3zn3mHwLjxFqAmZCC0dpfldlRQl5AIYKEYSKfVKQaW5sSENxh04ABYSFGU4LXYdhR3V6p5GiQ4oKmGCtjkymi2qGBZ+6eo+3g8KDvYLDxKrJuXNkys6qr0zNygvHxL/V1sVDDti/BQccA8yrYBAjHR0jc53LRQYU6R0UBnO4RxmiG/IjJUIJFuoVKeCBigBN5QCk43BgFgMKFCYUGDAgFEUQRGIRYbCh2xACEDcAcHDgQDcQFGf9s7VkA0QCI0t2W0DRw68h8ChAEELSJE8xijBvVqCgIU9PjwA+UNzG5AHEB9xkDpk4QMGvARQsEDlKxMCALDeLcA0rqEEDlWCCAAAh+QQACgAJACwAAAAAIAAgAAAG/0CAcEgsKhSLonJJTBIFR0FRylQmFJlnlFhQJKrTrRCqoALIBXAxchySzZm2Wusdi8nfOfeYfAuPEWoCZkILR2l+V2VFCXkAhgoRhIp9UpBpbmxIQ3GHTgAFhIUZTgtdh2FHdXqnkaJDigqYYK2OTKaLaoYFn7p6j0wOA8PEAw6/Z4PKUhwdzs8dEL9kqqrN0M7SetTVCsLFw8d6C8vKvUQEv+dVCRAaBnNQtkwPFRQUFXOduUoTG/cUNkyYg+tIBlEMAFYYMAaBuCekxmhaJeSeBgiOHhw4QECAAwcCLhGJRUQCg3RDCmyUVmBYmlOiGqmBsPGlyz9YkAlxsJEhqCubABS9AsPgQAMqLQfM0oTMwEZ4QpLOwvMLxAEEXIBG5aczqtaut4YNXRIEACH5BAAKAAoALAAAAAAgACAAAAb/QIBwSCwqFIuicklMEgVHQVHKVCYUmWeUWFAkqtOtEKqgAsgFcDFyHJLNmbZa6x2Lyd8595h8C48RahAQRQtHaX5XZUUJeQAGHR0jA0SKfVKGCmlubEhCBSGRHSQOQwVmQwsZTgtdh0UQHKIHm2quChGophuiJHO3jkwOFB2UaoYFTnMGegDKRQQG0tMGBM1nAtnaABoU3t8UD81kR+UK3eDe4nrk5grR1NLWegva9s9czfhVAgMNpWqgBGNigMGBAwzmxBGjhACEgwcgzAPTqlwGXQ8gMgAhZIGHWm5WjelUZ8jBBgPMTBgwIMGCRgsygVSkgMiHByD7DWDmx5WuMkZqDLCU4gfAq2sACrAEWFSRLjUfWDopCqDTNQIsJ1LF0yzDAA90UHV5eo0qUjB8mgUBACH5BAAKAAsALAAAAAAgACAAAAb/QIBwSCwqFIuickk0FIiCo6A4ZSoZnRBUSiwoEtYipNOBDKOKKgD9DBNHHU4brc4c3cUBeSOk949geEQUZA5rXABHEW4PD0UOZBSHaQAJiEMJgQATFBQVBkQHZKACUwtHbX0RR0mVFp0UFwRCBSQDSgsZrQteqEUPGrAQmmG9ChFqRAkMsBd4xsRLBBsUoG6nBa14E4IA2kUFDuLjDql4peilAA0H7e4H1udH8/Ps7+3xbmj0qOTj5mEWpEP3DUq3glYWOBgAcEmUaNI+DBjwAY+dS0USGJg4wABEXMYyJNvE8UOGISKVCNClah4xjg60WUKyINOCUwrMzVRARMGENWQ4n/jpNTKTm15J/CTK2e0MoD+UKmHEs4onVDVVmyqdpAbNR4cKTjqNSots07EjzzJh1S0IADsAAAAAAAAAAAA=) center center no-repeat;
+}
+
+/* Icons */
+@font-face
+{
+ font-family: 'slick';
+ font-weight: normal;
+ font-style: normal;
+
+ src: url(data:application/vnd.ms-fontobject;base64,AAgAAGQHAAABAAIAAAAAAAIABQkAAAAAAAABAJABAAAAAExQAQAAgCAAAAAAAAAAAAAAAAEAAAAAAAAATxDE8AAAAAAAAAAAAAAAAAAAAAAAAAoAcwBsAGkAYwBrAAAADgBSAGUAZwB1AGwAYQByAAAAFgBWAGUAcgBzAGkAbwBuACAAMQAuADAAAAAKAHMAbABpAGMAawAAAAAAAAEAAAANAIAAAwBQRkZUTW3RyK8AAAdIAAAAHEdERUYANAAGAAAHKAAAACBPUy8yT/b9sgAAAVgAAABWY21hcCIPRb0AAAHIAAABYmdhc3D//wADAAAHIAAAAAhnbHlmP5u2YAAAAzwAAAIsaGVhZAABMfsAAADcAAAANmhoZWED5QIFAAABFAAAACRobXR4BkoASgAAAbAAAAAWbG9jYQD2AaIAAAMsAAAAEG1heHAASwBHAAABOAAAACBuYW1lBSeBwgAABWgAAAFucG9zdC+zMgMAAAbYAAAARQABAAAAAQAA8MQQT18PPPUACwIAAAAAAM9xeH8AAAAAz3F4fwAlACUB2wHbAAAACAACAAAAAAAAAAEAAAHbAAAALgIAAAAAAAHbAAEAAAAAAAAAAAAAAAAAAAAEAAEAAAAHAEQAAgAAAAAAAgAAAAEAAQAAAEAAAAAAAAAAAQIAAZAABQAIAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAIABQkAAAAAAACAAAABAAAAIAAAAAAAAAAAUGZFZABAAGEhkgHg/+AALgHb/9sAAAABAAAAAAAAAgAAAAAAAAACAAAAAgAAJQAlACUAJQAAAAAAAwAAAAMAAAAcAAEAAAAAAFwAAwABAAAAHAAEAEAAAAAMAAgAAgAEAAAAYSAiIZAhkv//AAAAAABhICIhkCGS//8AAP+l3+PedN5xAAEAAAAAAAAAAAAAAAAAAAEGAAABAAAAAAAAAAECAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGAIwAsAEWAAIAJQAlAdsB2wAYACwAAD8BNjQvASYjIg8BBhUUHwEHBhUUHwEWMzI2FAcGBwYiJyYnJjQ3Njc2MhcWF/GCBgaCBQcIBR0GBldXBgYdBQgH7x0eMjB8MDIeHR0eMjB8MDIecYIGDgaCBQUeBQcJBFhYBAkHBR4F0nwwMh4dHR4yMHwwMh4dHR4yAAAAAgAlACUB2wHbABgALAAAJTc2NTQvATc2NTQvASYjIg8BBhQfARYzMjYUBwYHBiInJicmNDc2NzYyFxYXASgdBgZXVwYGHQUIBwWCBgaCBQcIuB0eMjB8MDIeHR0eMjB8MDIecR4FBwkEWFgECQcFHgUFggYOBoIF0nwwMh4dHR4yMHwwMh4dHR4yAAABACUAJQHbAdsAEwAAABQHBgcGIicmJyY0NzY3NjIXFhcB2x0eMjB8MDIeHR0eMjB8MDIeAT58MDIeHR0eMjB8MDIeHR0eMgABACUAJQHbAdsAQwAAARUUBisBIicmPwEmIyIHBgcGBwYUFxYXFhcWMzI3Njc2MzIfARYVFAcGBwYjIicmJyYnJjQ3Njc2NzYzMhcWFzc2FxYB2woIgAsGBQkoKjodHBwSFAwLCwwUEhwcHSIeIBMGAQQDJwMCISspNC8mLBobFBERFBsaLCYvKicpHSUIDAsBt4AICgsLCScnCwwUEhwcOhwcEhQMCw8OHAMDJwMDAgQnFBQRFBsaLCZeJiwaGxQRDxEcJQgEBgAAAAAAAAwAlgABAAAAAAABAAUADAABAAAAAAACAAcAIgABAAAAAAADACEAbgABAAAAAAAEAAUAnAABAAAAAAAFAAsAugABAAAAAAAGAAUA0gADAAEECQABAAoAAAADAAEECQACAA4AEgADAAEECQADAEIAKgADAAEECQAEAAoAkAADAAEECQAFABYAogADAAEECQAGAAoAxgBzAGwAaQBjAGsAAHNsaWNrAABSAGUAZwB1AGwAYQByAABSZWd1bGFyAABGAG8AbgB0AEYAbwByAGcAZQAgADIALgAwACAAOgAgAHMAbABpAGMAawAgADoAIAAxADQALQA0AC0AMgAwADEANAAARm9udEZvcmdlIDIuMCA6IHNsaWNrIDogMTQtNC0yMDE0AABzAGwAaQBjAGsAAHNsaWNrAABWAGUAcgBzAGkAbwBuACAAMQAuADAAAFZlcnNpb24gMS4wAABzAGwAaQBjAGsAAHNsaWNrAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAABwAAAAEAAgECAQMAhwBECmFycm93cmlnaHQJYXJyb3dsZWZ0AAAAAAAAAf//AAIAAQAAAA4AAAAYAAAAAAACAAEAAwAGAAEABAAAAAIAAAAAAAEAAAAAzu7XsAAAAADPcXh/AAAAAM9xeH8=);
+ src: url(data:application/vnd.ms-fontobject;base64,AAgAAGQHAAABAAIAAAAAAAIABQkAAAAAAAABAJABAAAAAExQAQAAgCAAAAAAAAAAAAAAAAEAAAAAAAAATxDE8AAAAAAAAAAAAAAAAAAAAAAAAAoAcwBsAGkAYwBrAAAADgBSAGUAZwB1AGwAYQByAAAAFgBWAGUAcgBzAGkAbwBuACAAMQAuADAAAAAKAHMAbABpAGMAawAAAAAAAAEAAAANAIAAAwBQRkZUTW3RyK8AAAdIAAAAHEdERUYANAAGAAAHKAAAACBPUy8yT/b9sgAAAVgAAABWY21hcCIPRb0AAAHIAAABYmdhc3D//wADAAAHIAAAAAhnbHlmP5u2YAAAAzwAAAIsaGVhZAABMfsAAADcAAAANmhoZWED5QIFAAABFAAAACRobXR4BkoASgAAAbAAAAAWbG9jYQD2AaIAAAMsAAAAEG1heHAASwBHAAABOAAAACBuYW1lBSeBwgAABWgAAAFucG9zdC+zMgMAAAbYAAAARQABAAAAAQAA8MQQT18PPPUACwIAAAAAAM9xeH8AAAAAz3F4fwAlACUB2wHbAAAACAACAAAAAAAAAAEAAAHbAAAALgIAAAAAAAHbAAEAAAAAAAAAAAAAAAAAAAAEAAEAAAAHAEQAAgAAAAAAAgAAAAEAAQAAAEAAAAAAAAAAAQIAAZAABQAIAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAIABQkAAAAAAACAAAABAAAAIAAAAAAAAAAAUGZFZABAAGEhkgHg/+AALgHb/9sAAAABAAAAAAAAAgAAAAAAAAACAAAAAgAAJQAlACUAJQAAAAAAAwAAAAMAAAAcAAEAAAAAAFwAAwABAAAAHAAEAEAAAAAMAAgAAgAEAAAAYSAiIZAhkv//AAAAAABhICIhkCGS//8AAP+l3+PedN5xAAEAAAAAAAAAAAAAAAAAAAEGAAABAAAAAAAAAAECAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGAIwAsAEWAAIAJQAlAdsB2wAYACwAAD8BNjQvASYjIg8BBhUUHwEHBhUUHwEWMzI2FAcGBwYiJyYnJjQ3Njc2MhcWF/GCBgaCBQcIBR0GBldXBgYdBQgH7x0eMjB8MDIeHR0eMjB8MDIecYIGDgaCBQUeBQcJBFhYBAkHBR4F0nwwMh4dHR4yMHwwMh4dHR4yAAAAAgAlACUB2wHbABgALAAAJTc2NTQvATc2NTQvASYjIg8BBhQfARYzMjYUBwYHBiInJicmNDc2NzYyFxYXASgdBgZXVwYGHQUIBwWCBgaCBQcIuB0eMjB8MDIeHR0eMjB8MDIecR4FBwkEWFgECQcFHgUFggYOBoIF0nwwMh4dHR4yMHwwMh4dHR4yAAABACUAJQHbAdsAEwAAABQHBgcGIicmJyY0NzY3NjIXFhcB2x0eMjB8MDIeHR0eMjB8MDIeAT58MDIeHR0eMjB8MDIeHR0eMgABACUAJQHbAdsAQwAAARUUBisBIicmPwEmIyIHBgcGBwYUFxYXFhcWMzI3Njc2MzIfARYVFAcGBwYjIicmJyYnJjQ3Njc2NzYzMhcWFzc2FxYB2woIgAsGBQkoKjodHBwSFAwLCwwUEhwcHSIeIBMGAQQDJwMCISspNC8mLBobFBERFBsaLCYvKicpHSUIDAsBt4AICgsLCScnCwwUEhwcOhwcEhQMCw8OHAMDJwMDAgQnFBQRFBsaLCZeJiwaGxQRDxEcJQgEBgAAAAAAAAwAlgABAAAAAAABAAUADAABAAAAAAACAAcAIgABAAAAAAADACEAbgABAAAAAAAEAAUAnAABAAAAAAAFAAsAugABAAAAAAAGAAUA0gADAAEECQABAAoAAAADAAEECQACAA4AEgADAAEECQADAEIAKgADAAEECQAEAAoAkAADAAEECQAFABYAogADAAEECQAGAAoAxgBzAGwAaQBjAGsAAHNsaWNrAABSAGUAZwB1AGwAYQByAABSZWd1bGFyAABGAG8AbgB0AEYAbwByAGcAZQAgADIALgAwACAAOgAgAHMAbABpAGMAawAgADoAIAAxADQALQA0AC0AMgAwADEANAAARm9udEZvcmdlIDIuMCA6IHNsaWNrIDogMTQtNC0yMDE0AABzAGwAaQBjAGsAAHNsaWNrAABWAGUAcgBzAGkAbwBuACAAMQAuADAAAFZlcnNpb24gMS4wAABzAGwAaQBjAGsAAHNsaWNrAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAABwAAAAEAAgECAQMAhwBECmFycm93cmlnaHQJYXJyb3dsZWZ0AAAAAAAAAf//AAIAAQAAAA4AAAAYAAAAAAACAAEAAwAGAAEABAAAAAIAAAAAAAEAAAAAzu7XsAAAAADPcXh/AAAAAM9xeH8=?#iefix) format('embedded-opentype'), url(data:font/woff;base64,d09GRk9UVE8AAAVkAAsAAAAAB1wAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAABCAAAAi4AAAKbH/pWDkZGVE0AAAM4AAAAGgAAABxt0civR0RFRgAAA1QAAAAcAAAAIAAyAARPUy8yAAADcAAAAFIAAABgUBj/rmNtYXAAAAPEAAAAUAAAAWIiC0SwaGVhZAAABBQAAAAuAAAANgABMftoaGVhAAAERAAAABwAAAAkA+UCA2htdHgAAARgAAAADgAAAA4ESgBKbWF4cAAABHAAAAAGAAAABgAFUABuYW1lAAAEeAAAANwAAAFuBSeBwnBvc3QAAAVUAAAAEAAAACAAAwABeJw9ks9vEkEUx2cpWyeUoFYgNkHi2Wt7N3rVm3cTs3UVLC4LxIWEQvi1P3i7O1tYLJDAmlgKGEhQrsajf0j7J3jYTXrQWUrMJG+++b55n5e8NwwKBhHDMLv5kxT3ATEBxKBn3qOAl9zxHgb1MAPhHQgHkyF08Gr/L8B/Eb6zWnmCJ7AJVLubQOheArXvJ1A4EXi6j4I+Zg9F0QFKvsnlBCmXeve+sFEnb/nCptdtQ4QYhVFRAT1HrF8UQK/RL/SbmUbclsvGVFXRZKDHUE38cc4qpkbAAsuwiImvro+ufcfaOIQ6szlrmjRJDaKZKnbjN3GWKIbiIzRFUfCffuxxKOL+3LDlDVvx2TdxN84qZEsnhNBa6pgm2dAsnzbLsETdsmRFxUeHV4e+I2/ptN8TyqV8T3Dt29t7EYOuajVIw2y1Wy3M86w0zg/Fz2IvawmQAUHOVrPVfLkoScVynsqsTG0MGUs4z55nh3mnOJa+li+rl9WpPIcFfDubDeaDC+fLBdYN3QADzLauGfj4B6sZmq6CCpqmtSvF0qlUl2qf5AJIUCSlTqlb7lUG+LRfGzZGzZEyBgccMu6MuqPecNDvD4Y9Kjtj4gD+DsvKVMTcMdtqtZtmkzQstQvYje7Syep0PDSAhSOeHYXYWThEF//A/0YvYV1fSQtpKU5STtrhbQ444OtpKSWJIg3pOg8cBs7maTY1EZf07aq+hjWs7IWzdCYTGhb2CtZ47x+Uhx28AAB4nGNgYGBkAIJz765vANHnCyvqYTQAWnkHswAAeJxjYGRgYOADYgkGEGBiYARCFjAG8RgABHYAN3icY2BmYmCcwMDKwMHow5jGwMDgDqW/MkgytDAwMDGwcjKAQQMDAyOQUmCAgoA01xQGB4ZExUmMD/4/YNBjvP3/NgNEDQPjbbBKBQZGADfLDgsAAHicY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQzMCQqKClOUJz0/z9YHRLv/+L7D+8V3cuHmgAHjGwM6ELUByxUMIOZCmbgAAA5LQ8XeJxjYGRgYABiO68w73h+m68M3EwMIHC+sKIeTqsyqDLeZrwN5HIwgKUB/aYJUgAAeJxjYGRgYLzNwMCgx8QAAkA2IwMqYAIAMGIB7QIAAAACAAAlACUAJQAlAAAAAFAAAAUAAHicbY49asNAEIU/2ZJDfkiRIvXapUFCEqpcptABUrg3ZhEiQoKVfY9UqVLlGDlADpAT5e16IUWysMz3hjfzBrjjjQT/EjKpCy+4YhN5yZoxcirPe+SMWz4jr6S+5UzSa3VuwpTnBfc8RF7yxDZyKs9r5IxHPiKv1P9iZqDnyAvMQ39UecbScVb/gJO03Xk4CFom3XYK1clhMdQUlKo7/d9NF13RkIdfy+MV7TSe2sl11tRFaXYmJKpWTd7kdVnJ8veevZKc+n3I93t9Jnvr5n4aTVWU/0z9AI2qMkV4nGNgZkAGjAxoAAAAjgAF) format('woff'), url(data:font/ttf;base64,AAEAAAANAIAAAwBQRkZUTW3RyK8AAAdIAAAAHEdERUYANAAGAAAHKAAAACBPUy8yT/b9sgAAAVgAAABWY21hcCIPRb0AAAHIAAABYmdhc3D//wADAAAHIAAAAAhnbHlmP5u2YAAAAzwAAAIsaGVhZAABMfsAAADcAAAANmhoZWED5QIFAAABFAAAACRobXR4BkoASgAAAbAAAAAWbG9jYQD2AaIAAAMsAAAAEG1heHAASwBHAAABOAAAACBuYW1lBSeBwgAABWgAAAFucG9zdC+zMgMAAAbYAAAARQABAAAAAQAA8MQQT18PPPUACwIAAAAAAM9xeH8AAAAAz3F4fwAlACUB2wHbAAAACAACAAAAAAAAAAEAAAHbAAAALgIAAAAAAAHbAAEAAAAAAAAAAAAAAAAAAAAEAAEAAAAHAEQAAgAAAAAAAgAAAAEAAQAAAEAAAAAAAAAAAQIAAZAABQAIAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAIABQkAAAAAAACAAAABAAAAIAAAAAAAAAAAUGZFZABAAGEhkgHg/+AALgHb/9sAAAABAAAAAAAAAgAAAAAAAAACAAAAAgAAJQAlACUAJQAAAAAAAwAAAAMAAAAcAAEAAAAAAFwAAwABAAAAHAAEAEAAAAAMAAgAAgAEAAAAYSAiIZAhkv//AAAAAABhICIhkCGS//8AAP+l3+PedN5xAAEAAAAAAAAAAAAAAAAAAAEGAAABAAAAAAAAAAECAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGAIwAsAEWAAIAJQAlAdsB2wAYACwAAD8BNjQvASYjIg8BBhUUHwEHBhUUHwEWMzI2FAcGBwYiJyYnJjQ3Njc2MhcWF/GCBgaCBQcIBR0GBldXBgYdBQgH7x0eMjB8MDIeHR0eMjB8MDIecYIGDgaCBQUeBQcJBFhYBAkHBR4F0nwwMh4dHR4yMHwwMh4dHR4yAAAAAgAlACUB2wHbABgALAAAJTc2NTQvATc2NTQvASYjIg8BBhQfARYzMjYUBwYHBiInJicmNDc2NzYyFxYXASgdBgZXVwYGHQUIBwWCBgaCBQcIuB0eMjB8MDIeHR0eMjB8MDIecR4FBwkEWFgECQcFHgUFggYOBoIF0nwwMh4dHR4yMHwwMh4dHR4yAAABACUAJQHbAdsAEwAAABQHBgcGIicmJyY0NzY3NjIXFhcB2x0eMjB8MDIeHR0eMjB8MDIeAT58MDIeHR0eMjB8MDIeHR0eMgABACUAJQHbAdsAQwAAARUUBisBIicmPwEmIyIHBgcGBwYUFxYXFhcWMzI3Njc2MzIfARYVFAcGBwYjIicmJyYnJjQ3Njc2NzYzMhcWFzc2FxYB2woIgAsGBQkoKjodHBwSFAwLCwwUEhwcHSIeIBMGAQQDJwMCISspNC8mLBobFBERFBsaLCYvKicpHSUIDAsBt4AICgsLCScnCwwUEhwcOhwcEhQMCw8OHAMDJwMDAgQnFBQRFBsaLCZeJiwaGxQRDxEcJQgEBgAAAAAAAAwAlgABAAAAAAABAAUADAABAAAAAAACAAcAIgABAAAAAAADACEAbgABAAAAAAAEAAUAnAABAAAAAAAFAAsAugABAAAAAAAGAAUA0gADAAEECQABAAoAAAADAAEECQACAA4AEgADAAEECQADAEIAKgADAAEECQAEAAoAkAADAAEECQAFABYAogADAAEECQAGAAoAxgBzAGwAaQBjAGsAAHNsaWNrAABSAGUAZwB1AGwAYQByAABSZWd1bGFyAABGAG8AbgB0AEYAbwByAGcAZQAgADIALgAwACAAOgAgAHMAbABpAGMAawAgADoAIAAxADQALQA0AC0AMgAwADEANAAARm9udEZvcmdlIDIuMCA6IHNsaWNrIDogMTQtNC0yMDE0AABzAGwAaQBjAGsAAHNsaWNrAABWAGUAcgBzAGkAbwBuACAAMQAuADAAAFZlcnNpb24gMS4wAABzAGwAaQBjAGsAAHNsaWNrAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAABwAAAAEAAgECAQMAhwBECmFycm93cmlnaHQJYXJyb3dsZWZ0AAAAAAAAAf//AAIAAQAAAA4AAAAYAAAAAAACAAEAAwAGAAEABAAAAAIAAAAAAAEAAAAAzu7XsAAAAADPcXh/AAAAAM9xeH8=) format('truetype'), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxtZXRhZGF0YT5HZW5lcmF0ZWQgYnkgRm9udGFzdGljLm1lPC9tZXRhZGF0YT4KPGRlZnM+Cjxmb250IGlkPSJzbGljayIgaG9yaXotYWR2LXg9IjUxMiI+Cjxmb250LWZhY2UgZm9udC1mYW1pbHk9InNsaWNrIiB1bml0cy1wZXItZW09IjUxMiIgYXNjZW50PSI0ODAiIGRlc2NlbnQ9Ii0zMiIvPgo8bWlzc2luZy1nbHlwaCBob3Jpei1hZHYteD0iNTEyIiAvPgoKPGdseXBoIHVuaWNvZGU9IiYjODU5NDsiIGQ9Ik0yNDEgMTEzbDEzMCAxMzBjNCA0IDYgOCA2IDEzIDAgNS0yIDktNiAxM2wtMTMwIDEzMGMtMyAzLTcgNS0xMiA1LTUgMC0xMC0yLTEzLTVsLTI5LTMwYy00LTMtNi03LTYtMTIgMC01IDItMTAgNi0xM2w4Ny04OC04Ny04OGMtNC0zLTYtOC02LTEzIDAtNSAyLTkgNi0xMmwyOS0zMGMzLTMgOC01IDEzLTUgNSAwIDkgMiAxMiA1eiBtMjM0IDE0M2MwLTQwLTktNzctMjktMTEwLTIwLTM0LTQ2LTYwLTgwLTgwLTMzLTIwLTcwLTI5LTExMC0yOS00MCAwLTc3IDktMTEwIDI5LTM0IDIwLTYwIDQ2LTgwIDgwLTIwIDMzLTI5IDcwLTI5IDExMCAwIDQwIDkgNzcgMjkgMTEwIDIwIDM0IDQ2IDYwIDgwIDgwIDMzIDIwIDcwIDI5IDExMCAyOSA0MCAwIDc3LTkgMTEwLTI5IDM0LTIwIDYwLTQ2IDgwLTgwIDIwLTMzIDI5LTcwIDI5LTExMHoiLz4KPGdseXBoIHVuaWNvZGU9IiYjODU5MjsiIGQ9Ik0yOTYgMTEzbDI5IDMwYzQgMyA2IDcgNiAxMiAwIDUtMiAxMC02IDEzbC04NyA4OCA4NyA4OGM0IDMgNiA4IDYgMTMgMCA1LTIgOS02IDEybC0yOSAzMGMtMyAzLTggNS0xMyA1LTUgMC05LTItMTItNWwtMTMwLTEzMGMtNC00LTYtOC02LTEzIDAtNSAyLTkgNi0xM2wxMzAtMTMwYzMtMyA3LTUgMTItNSA1IDAgMTAgMiAxMyA1eiBtMTc5IDE0M2MwLTQwLTktNzctMjktMTEwLTIwLTM0LTQ2LTYwLTgwLTgwLTMzLTIwLTcwLTI5LTExMC0yOS00MCAwLTc3IDktMTEwIDI5LTM0IDIwLTYwIDQ2LTgwIDgwLTIwIDMzLTI5IDcwLTI5IDExMCAwIDQwIDkgNzcgMjkgMTEwIDIwIDM0IDQ2IDYwIDgwIDgwIDMzIDIwIDcwIDI5IDExMCAyOSA0MCAwIDc3LTkgMTEwLTI5IDM0LTIwIDYwLTQ2IDgwLTgwIDIwLTMzIDI5LTcwIDI5LTExMHoiLz4KPGdseXBoIHVuaWNvZGU9IiYjODIyNjsiIGQ9Ik00NzUgMjU2YzAtNDAtOS03Ny0yOS0xMTAtMjAtMzQtNDYtNjAtODAtODAtMzMtMjAtNzAtMjktMTEwLTI5LTQwIDAtNzcgOS0xMTAgMjktMzQgMjAtNjAgNDYtODAgODAtMjAgMzMtMjkgNzAtMjkgMTEwIDAgNDAgOSA3NyAyOSAxMTAgMjAgMzQgNDYgNjAgODAgODAgMzMgMjAgNzAgMjkgMTEwIDI5IDQwIDAgNzctOSAxMTAtMjkgMzQtMjAgNjAtNDYgODAtODAgMjAtMzMgMjktNzAgMjktMTEweiIvPgo8Z2x5cGggdW5pY29kZT0iJiM5NzsiIGQ9Ik00NzUgNDM5bDAtMTI4YzAtNS0xLTktNS0xMy00LTQtOC01LTEzLTVsLTEyOCAwYy04IDAtMTMgMy0xNyAxMS0zIDctMiAxNCA0IDIwbDQwIDM5Yy0yOCAyNi02MiAzOS0xMDAgMzktMjAgMC0zOS00LTU3LTExLTE4LTgtMzMtMTgtNDYtMzItMTQtMTMtMjQtMjgtMzItNDYtNy0xOC0xMS0zNy0xMS01NyAwLTIwIDQtMzkgMTEtNTcgOC0xOCAxOC0zMyAzMi00NiAxMy0xNCAyOC0yNCA0Ni0zMiAxOC03IDM3LTExIDU3LTExIDIzIDAgNDQgNSA2NCAxNSAyMCA5IDM4IDIzIDUxIDQyIDIgMSA0IDMgNyAzIDMgMCA1LTEgNy0zbDM5LTM5YzItMiAzLTMgMy02IDAtMi0xLTQtMi02LTIxLTI1LTQ2LTQ1LTc2LTU5LTI5LTE0LTYwLTIwLTkzLTIwLTMwIDAtNTggNS04NSAxNy0yNyAxMi01MSAyNy03MCA0Ny0yMCAxOS0zNSA0My00NyA3MC0xMiAyNy0xNyA1NS0xNyA4NSAwIDMwIDUgNTggMTcgODUgMTIgMjcgMjcgNTEgNDcgNzAgMTkgMjAgNDMgMzUgNzAgNDcgMjcgMTIgNTUgMTcgODUgMTcgMjggMCA1NS01IDgxLTE1IDI2LTExIDUwLTI2IDcwLTQ1bDM3IDM3YzYgNiAxMiA3IDIwIDQgOC00IDExLTkgMTEtMTd6Ii8+CjwvZm9udD48L2RlZnM+PC9zdmc+Cg==#slick) format('svg');
+}
+/* Arrows */
+.slick-prev,
+.slick-next
+{
+ font-size: 0;
+ line-height: 0;
+
+ position: absolute;
+ top: 50%;
+
+ display: block;
+
+ width: 20px;
+ height: 20px;
+ padding: 0;
+ transform: translate(0, -50%);
+
+ cursor: pointer;
+
+ color: transparent;
+ border: none;
+ outline: none;
+ background: transparent;
+}
+.slick-prev:hover,
+.slick-prev:focus,
+.slick-next:hover,
+.slick-next:focus
+{
+ color: transparent;
+ outline: none;
+ background: transparent;
+}
+.slick-prev:hover:before,
+.slick-prev:focus:before,
+.slick-next:hover:before,
+.slick-next:focus:before
+{
+ opacity: 1;
+}
+.slick-prev.slick-disabled:before,
+.slick-next.slick-disabled:before
+{
+ opacity: .25;
+}
+
+.slick-prev:before,
+.slick-next:before
+{
+ font-family: 'slick';
+ font-size: 20px;
+ line-height: 1;
+
+ opacity: .75;
+ color: white;
+
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.slick-prev
+{
+ left: -25px;
+}
+[dir='rtl'] .slick-prev
+{
+ right: -25px;
+ left: auto;
+}
+.slick-prev:before
+{
+ content: '←';
+}
+[dir='rtl'] .slick-prev:before
+{
+ content: '→';
+}
+
+.slick-next
+{
+ right: -25px;
+}
+[dir='rtl'] .slick-next
+{
+ right: auto;
+ left: -25px;
+}
+.slick-next:before
+{
+ content: '→';
+}
+[dir='rtl'] .slick-next:before
+{
+ content: '←';
+}
+
+/* Dots */
+.slick-dotted.slick-slider
+{
+ margin-bottom: 30px;
+}
+
+.slick-dots
+{
+ position: absolute;
+ bottom: -25px;
+
+ display: block;
+
+ width: 100%;
+ padding: 0;
+ margin: 0;
+
+ list-style: none;
+
+ text-align: center;
+}
+.slick-dots li
+{
+ position: relative;
+
+ display: inline-block;
+
+ width: 20px;
+ height: 20px;
+ margin: 0 5px;
+ padding: 0;
+
+ cursor: pointer;
+}
+.slick-dots li button
+{
+ font-size: 0;
+ line-height: 0;
+
+ display: block;
+
+ width: 20px;
+ height: 20px;
+ padding: 5px;
+
+ cursor: pointer;
+
+ color: transparent;
+ border: 0;
+ outline: none;
+ background: transparent;
+}
+.slick-dots li button:hover,
+.slick-dots li button:focus
+{
+ outline: none;
+}
+.slick-dots li button:hover:before,
+.slick-dots li button:focus:before
+{
+ opacity: 1;
+}
+.slick-dots li button:before
+{
+ font-family: 'slick';
+ font-size: 6px;
+ line-height: 20px;
+
+ position: absolute;
+ top: 0;
+ left: 0;
+
+ width: 20px;
+ height: 20px;
+
+ content: '•';
+ text-align: center;
+
+ opacity: .25;
+ color: black;
+
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.slick-dots li.slick-active button:before
+{
+ opacity: .75;
+ color: black;
+}
+
+.topics_header_src-components-home-WhatWeDo-styles-module {
+ font-family: var(--ifm-font-family-rubik-one);
+ font-size: var(--ifm-font-size-secondary-title);
+ font-style: normal;
+ font-weight: 400;
+ line-height: 28px;
+ text-align: center;
+ margin-bottom: var(--ifm-spacing-xl);
+}
+
+div .topics_header_src-components-home-WhatWeDo-styles-module {
+ color: var(--ifm-color-neutral-n2);
+}
+
+@media only screen and (max-width: 996px) {
+ /*Mobile*/
+ .header_src-components-home-WhatWeDo-styles-module {
+ display: none;
+ }
+
+ .whatwedo_container_src-components-home-WhatWeDo-styles-module {
+ /*background-color: var(--ifm-color-primary-p1);*/
+ padding: 0;
+ margin-top: 0;
+ }
+
+ .topics_card_src-components-home-WhatWeDo-styles-module {
+ width: 80%;
+ text-align: justify;
+ background-color: var(--ifm-color-primary-p0);
+ margin: var(--ifm-spacing-lg) auto var(--ifm-spacing-lg) auto ;
+ }
+
+ .topics_card_src-components-home-WhatWeDo-styles-module .p_src-components-home-WhatWeDo-styles-module {
+ padding: var(--ifm-spacing-xs) var(--ifm-spacing-xs);
+ }
+
+
+ .services_link_desktop_src-components-home-WhatWeDo-styles-module {
+ display: none;
+ }
+}
+
+@media only screen and (min-width: 996px) {
+ .header_src-components-home-WhatWeDo-styles-module {
+ color: var(--ifm-color-primary-p2);
+ }
+
+ .projects_link_src-components-home-WhatWeDo-styles-module{
+ display: none;
+ }
+
+ .services_link_mobile_src-components-home-WhatWeDo-styles-module {
+ display: none;
+ }
+
+ .whatwedo_container_src-components-home-WhatWeDo-styles-module {
+ background-color: var(--ifm-color-primary-p1);
+ padding: var(--ifm-spacing-3xl) var(--ifm-spacing-2xl) 0
+ var(--ifm-spacing-2xl);
+ }
+
+ .topics_card_src-components-home-WhatWeDo-styles-module {
+ height: 462px;
+ width: 350px;
+ padding: var(--ifm-spacing-2xl) var(--ifm-spacing-lg);
+ border-radius: 8px;
+ box-shadow: 0px 0px 8px 1px #c8c8c7;
+ background-color: var(--ifm-color-primary-p0);
+ margin: 0 var(--ifm-spacing-lg) var(--ifm-spacing-xl) var(--ifm-spacing-lg);
+ }
+}
+
+
+@media only screen and (max-width: 996px) {
+ /*Mobile*/
+ .link_to_src-components-home-styles-module {
+ background-color: var(--ifm-color-primary-p1);
+ color: var(--ifm-text-color-on-primary-p1);
+ width: 358px;
+ font-weight: 700;
+ }
+
+ .link_to_services_src-components-home-styles-module {
+ background-color: var(--ifm-color-primary-p1);
+ color: var(--ifm-text-color-on-primary-p1);
+ width: 358px;
+ font-weight: 700;
+ }
+
+ .link_to_about_us_src-components-home-styles-module {
+ background-color: var(--ifm-color-primary-p1);
+ color: var(--ifm-text-color-on-primary-p1);
+ width: 358px;
+ font-weight: 700;
+ }
+}
+
+@media only screen and (min-width: 996px) {
+ .link_to_src-components-home-styles-module {
+ background-color: var(--ifm-color-secondary-s2);
+ color: white;
+ width: 358px;
+ font-weight: 700;
+ }
+
+ .link_to_services_src-components-home-styles-module {
+ background-color: var(--ifm-color-blue-jupyter);
+ color: white;
+ width: 358px;
+ font-weight: 700;
+ }
+
+
+ .link_to_about_us_src-components-home-styles-module {
+ background-color: var(--ifm-color-secondary-s2);
+ color: white;
+ width: 358px;
+ font-weight: 700;
+ }
+}
+
+@media (max-width: 996px) {
+ .projects_overview_container_src-components-home-ProjectsOverview-styles-module {
+ display: none;
+ }
+}
+
+.h2_custom_src-components-home-ProjectsOverview-styles-module {
+ color: var(--ifm-color-blue-jupyter);
+}
+
+.col_project_overview_with_padding_src-components-home-ProjectsOverview-styles-module {
+ padding: var(--ifm-spacing-4xl) var(--ifm-spacing-3xl);
+}
+
+.project_yellow_src-components-home-ProjectsOverview-styles-module {
+ background-color: var(--ifm-color-primary-p1);
+}
+
+.project_light_yellow_src-components-home-ProjectsOverview-styles-module {
+ background-color: var(--ifm-color-primary-p0);
+}
+
+@media only screen and (max-width: 996px) {
+ .aboutQS_container_src-components-home-AboutQS-styles-module {
+ background-color: var(--ifm-color-secondary-s2);
+ color: white;
+ padding: var(--ifm-spacing-2xl) var(--ifm-spacing-2xl) 0
+ var(--ifm-spacing-2xl);
+ text-align: center;
+ }
+
+ .aboutQS_text_src-components-home-AboutQS-styles-module {
+ font-size: 14px;
+ text-align: center;
+ margin-bottom: var(--ifm-spacing-xl);
+ }
+
+}
+
+@media only screen and (min-width: 996px) {
+ .aboutQS_container_src-components-home-AboutQS-styles-module {
+ margin-top: var(--ifm-spacing-2xl);
+ background-color: var(--ifm-color-primary-p1);
+ color: var(--ifm-color-primary-p2);
+ padding: var(--ifm-spacing-2xl) var(--ifm-spacing-5xl) 0
+ var(--ifm-spacing-5xl);
+ }
+
+ .aboutQS_text_src-components-home-AboutQS-styles-module {
+ font-size: 24px;
+ text-align: center;
+ margin-bottom: var(--ifm-spacing-lg);
+ }
+}
+
+.blogpost_image_src-components-blog-styles-module {
+ filter: grayscale(1);
+}
+
+.blogpost_card_src-components-blog-styles-module {
+ height: 556px;
+ width: 369px;
+ border-radius: 8px;
+ box-shadow: 4px 4px 18px -1px #dee0fc;
+ padding: var(--ifm-spacing-xl);
+ background: var(--ifm-background-color-card);
+}
+
+.blogpost_card_src-components-blog-styles-module:hover {
+ border: 1px solid #cbc7b1;
+}
+
+div .blogpost_header_src-components-blog-styles-module {
+ color: var(--ifm-text-color);
+}
+div .blogpost_summary_src-components-blog-styles-module {
+ color: var(--ifm-text-color);
+}
+
+div .blogpost_authors_src-components-blog-styles-module {
+ color: var(--ifm-text-color);
+}
+
+div .blogpost_date_src-components-blog-styles-module {
+ color: var(--ifm-text-color);
+}
+
+.blogpost_summary_src-components-blog-styles-module {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 300;
+ line-height: 150%; /* 21px */
+ letter-spacing: -0.154px;
+ text-align: justify;
+ margin-bottom: var(--ifm-spacing-sm);
+ height: 124px;
+ color: var(--ifm-text-color);
+}
+
+.blogpost_header_src-components-blog-styles-module {
+ color: var(---ifm-text-color);
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 150%; /* 27px */
+ letter-spacing: -0.198px;
+ height: 64px;
+ margin: var(--ifm-spacing-xl) 0;
+ color: var(--ifm-text-color);
+}
+
+.blogpost_date_src-components-blog-styles-module {
+ color: var(---ifm-text-color);
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 12px;
+ font-style: normal;
+ font-weight: 800;
+ line-height: 16px;
+ letter-spacing: -0.132px;
+ text-align: left;
+ color: var(--ifm-text-color);
+}
+
+.blogpost_authors_src-components-blog-styles-module {
+ font-family: var(--ifm-font-family-roboto);
+ font-size: 12px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 16px;
+ text-align: left;
+ color: var(--ifm-text-color);
+}
+
+.search_input_src-components-blog-styles-module {
+ height: 34px;
+ width: 255px;
+ font-size: var(--ifm-font-size-small);
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNCAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggaWQ9IlZlY3RvciIgZD0iTTEwLjAwNTcgOS45MzM5Nkg5LjM3MzM2TDkuMTQ5MjMgOS43MDI0QzkuOTMzNjggOC43MjQ3IDEwLjQwNTkgNy40NTU0IDEwLjQwNTkgNi4wNzQ2MUMxMC40MDU5IDIuOTk1NzEgOC4wNzY2MiAwLjUgNS4yMDI5NyAwLjVDMi4zMjkzMyAwLjUgMCAyLjk5NTcxIDAgNi4wNzQ2MUMwIDkuMTUzNTIgMi4zMjkzMyAxMS42NDkyIDUuMjAyOTcgMTEuNjQ5MkM2LjQ5MTcxIDExLjY0OTIgNy42NzYzOSAxMS4xNDMyIDguNTg4OTEgMTAuMzAyN0w4LjgwNTAzIDEwLjU0MjlWMTEuMjIwNEwxMi44MDczIDE1LjVMMTQgMTQuMjIyMUwxMC4wMDU3IDkuOTMzOTZaTTUuMjAyOTcgOS45MzM5NkMzLjIwOTgzIDkuOTMzOTYgMS42MDA5MSA4LjIxMDEyIDEuNjAwOTEgNi4wNzQ2MUMxLjYwMDkxIDMuOTM5MTEgMy4yMDk4MyAyLjIxNTI3IDUuMjAyOTcgMi4yMTUyN0M3LjE5NjExIDIuMjE1MjcgOC44MDUwMyAzLjkzOTExIDguODA1MDMgNi4wNzQ2MUM4LjgwNTAzIDguMjEwMTIgNy4xOTYxMSA5LjkzMzk2IDUuMjAyOTcgOS45MzM5NloiIGZpbGw9IiNCMUI0QzMiLz4KPC9zdmc+Cg==);
+ background-repeat: no-repeat;
+ background-position: 8px;
+ border-radius: 8px;
+ padding: var(--ifm-spacing-xs) var(--ifm-spacing-lg) var(--ifm-spacing-xs)
+ var(--ifm-spacing-lg);
+ margin: var(--ifm-spacing-lg) 0;
+}
+
+@media only screen and (max-width: 996px) {
+ /*Mobile */
+ .news_container_src-components-home-News-styles-module {
+ display: none;
+ }
+}
+
+.news_container_src-components-home-News-styles-module {
+ margin-top: var(--ifm-spacing-2xl);
+}
+
+@media only screen and (max-width: 996px) {
+ /*Mobile*/
+ .learn_more_container_src-components-home-LearnMore-styles-module {
+ display: none;
+ }
+}
+
+.project_title_src-components-projects-styles-module {
+ margin-bottom: var(--ifm-spacing-md);
+ margin-top: var(--ifm-spacing-xl);
+ font-family: var(--ifm-font-family-bebas-neue);
+ font-size: var(--ifm-font-size-secondary-title);
+ font-style: normal;
+ font-weight: bolder;
+ line-height: 150%;
+ text-align: start;
+}
+
+div .project_title_src-components-projects-styles-module {
+ color: var(--ifm-color-primary-p2);
+ padding-left: var(--ifm-spacing-xl);
+}
+
+.project_description_src-components-projects-styles-module {
+ padding: var(--ifm-spacing-md) var(--ifm-spacing-xl);
+ text-align: justify;
+}
+
+.project_description_src-components-projects-styles-module p {
+ color: var(--ifm-color-primary-p2);
+}
+
+@media only screen and (max-width: 996px) {
+ /*Mobile*/
+ .all_projects_container_src-components-projects-styles-module {
+ margin-bottom: var(--ifm-spacing-3xl);
+
+ }
+
+ .header_container_src-components-projects-styles-module {
+ padding-top: var(--ifm-spacing-2xl);
+ background-color: var(--ifm-color-primary-p1);
+ }
+
+ .header_title_src-components-projects-styles-module {
+ padding-left: none;
+ }
+
+ .header_text_src-components-projects-styles-module {
+ font-family: var(--ifm-font-family-roboto);
+ color: var(--ifm-color-primary-p2);
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 20px;
+ letter-spacing: 0.25px;
+ text-align: justify;
+ margin-bottom: var(--ifm-spacing-lg);
+ padding: var(--ifm-spacing-lg) var(--ifm-spacing-xl);
+ }
+
+ .project_text_src-components-projects-styles-module {
+ background-color: white;
+ text-align: justify;
+ }
+
+ .project_picture_jupyter_src-components-projects-styles-module {
+ border: none;
+ margin-bottom: var(--ifm-spacing-xl);
+ }
+
+ .project_picture_xtensorxsimd_src-components-projects-styles-module {
+ border: none;
+ margin-bottom: var(--ifm-spacing-xl);
+ }
+
+ .project_picture_condaforge_src-components-projects-styles-module {
+ border: none;
+ margin-bottom: var(--ifm-spacing-xl);
+ }
+
+ .project_picture_apache_arrow_src-components-projects-styles-module {
+ border: none;
+ margin-bottom: var(--ifm-spacing-xl);
+ }
+
+ .project_picture_robotics_src-components-projects-styles-module {
+ border: none;
+ margin-bottom: var(--ifm-spacing-xl);
+ }
+}
+
+@media only screen and (min-width: 996px) {
+ /*Desktop*/
+
+ .all_projects_container_src-components-projects-styles-module {
+ margin: 0 0 var(--ifm-spacing-5xl) 0 ;
+ }
+ .header_container_src-components-projects-styles-module {
+ margin-top: var(--ifm-spacing-6xl);
+ }
+ .header_title_src-components-projects-styles-module {
+ padding-left: var(--ifm-spacing-4xl);
+ }
+
+ .header_text_src-components-projects-styles-module {
+ font-family: var(--ifm-font-family-roboto);
+ color: var(--ifm-color-primary-p2);
+ font-size: 22px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 28px;
+ margin-bottom: var(--ifm-spacing-3xl);
+ padding: var(--ifm-spacing-lg) var(--ifm-spacing-4xl);
+ }
+
+ .project_text_src-components-projects-styles-module {
+ background-color: var(--ifm-color-orange-light);
+ padding: var(--ifm-spacing-4xl) var(--ifm-spacing-3xl);
+ margin-bottom: var(--ifm-spacing-lg);
+ border-radius: 10px;
+ }
+
+ .project_picture_jupyter_src-components-projects-styles-module {
+ border: solid 1px var(--ifm-color-orange-jupyter);
+ margin-bottom: var(--ifm-spacing-lg);
+ border-radius: 10px;
+ }
+
+ .project_picture_xtensorxsimd_src-components-projects-styles-module {
+ border: solid 1px var(--ifm-color-green-xtensor);
+ margin-bottom: var(--ifm-spacing-lg);
+ border-radius: 10px;
+ }
+
+ .project_picture_condaforge_src-components-projects-styles-module {
+ border: solid 1px var(--ifm-color-grey-condaforge);
+ margin-bottom: var(--ifm-spacing-lg);
+ border-radius: 10px;
+ }
+
+ .project_picture_apache_arrow_src-components-projects-styles-module {
+ border: solid 1px black;
+ margin-bottom: var(--ifm-spacing-lg);
+ border-radius: 10px;
+ }
+
+ .project_picture_robotics_src-components-projects-styles-module {
+ border: solid 1px rgb(146, 95, 218);
+ margin-bottom: var(--ifm-spacing-lg);
+ border-radius: 10px;
+ }
+}
+
+.h2_custom_src-components-services-styles-module {
+ color: var(--ifm-color-indigo-i1);
+}
+
+ul {
+ padding-left: 20px;
+}
+.footer_container_src-components-footer-styles-module {
+ background-color: var(--ifm-color-primary-p1);
+ padding: var(--ifm-spacing-xl) var(--ifm-spacing-2xl) 0 var(--ifm-spacing-2xl);
+}
+
+.copyright_container_src-components-footer-styles-module {
+ text-align: center;
+ padding-bottom: var(--ifm-spacing-lg);
+}
+
+@media only screen and (max-width: 996px) {
+ /*Mobile*/
+ .menu_container_src-components-footer-styles-module {
+ display: none;
+ }
+
+ .col_social_media_desktop_src-components-footer-styles-module {
+ display: none;
+ }
+
+ .col_address_desktop_src-components-footer-styles-module {
+ display: none;
+ }
+}
+
+@media only screen and (min-width: 996px) {
+ /*Desktop*/
+
+ .col_social_media_mobile_src-components-footer-styles-module {
+ display: none;
+ }
+
+ .col_social_media_and_address_mobile_src-components-footer-styles-module {
+ display: none;
+ }
+}
+
diff --git a/static/img/avatars/Raul.png b/static/img/avatars/Raul.png
new file mode 100644
index 000000000..c77a34da7
Binary files /dev/null and b/static/img/avatars/Raul.png differ
diff --git a/static/img/avatars/Trung.png b/static/img/avatars/Trung.png
index 1473fe94a..64741d3c6 100644
Binary files a/static/img/avatars/Trung.png and b/static/img/avatars/Trung.png differ
diff --git a/static/img/avatars/Yahia.png b/static/img/avatars/Yahia.png
new file mode 100644
index 000000000..c3290d444
Binary files /dev/null and b/static/img/avatars/Yahia.png differ
diff --git a/static/img/avatars/avatars-jpg/Alexis@2x.jpg b/static/img/avatars/avatars-jpg/Alexis@2x.jpg
deleted file mode 100644
index a48abe131..000000000
Binary files a/static/img/avatars/avatars-jpg/Alexis@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Anastasiia@2x.jpg b/static/img/avatars/avatars-jpg/Anastasiia@2x.jpg
deleted file mode 100644
index c8556593c..000000000
Binary files a/static/img/avatars/avatars-jpg/Anastasiia@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Andreas@2x.jpg b/static/img/avatars/avatars-jpg/Andreas@2x.jpg
deleted file mode 100644
index bf8dd3a0d..000000000
Binary files a/static/img/avatars/avatars-jpg/Andreas@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Anutosh@2x.jpg b/static/img/avatars/avatars-jpg/Anutosh@2x.jpg
deleted file mode 100644
index 57ed2883c..000000000
Binary files a/static/img/avatars/avatars-jpg/Anutosh@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Darian@2x.jpg b/static/img/avatars/avatars-jpg/Darian@2x.jpg
deleted file mode 100644
index f2a753dce..000000000
Binary files a/static/img/avatars/avatars-jpg/Darian@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/David@2x.jpg b/static/img/avatars/avatars-jpg/David@2x.jpg
deleted file mode 100644
index 7c55b83b7..000000000
Binary files a/static/img/avatars/avatars-jpg/David@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Denisa@2x.jpg b/static/img/avatars/avatars-jpg/Denisa@2x.jpg
deleted file mode 100644
index 83bd20f73..000000000
Binary files a/static/img/avatars/avatars-jpg/Denisa@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Fanny@2x.jpg b/static/img/avatars/avatars-jpg/Fanny@2x.jpg
deleted file mode 100644
index e9916dce3..000000000
Binary files a/static/img/avatars/avatars-jpg/Fanny@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Florence@2x.jpg b/static/img/avatars/avatars-jpg/Florence@2x.jpg
deleted file mode 100644
index 12d6fb0c6..000000000
Binary files a/static/img/avatars/avatars-jpg/Florence@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Gabriela@2x.jpg b/static/img/avatars/avatars-jpg/Gabriela@2x.jpg
deleted file mode 100644
index f8cab5709..000000000
Binary files a/static/img/avatars/avatars-jpg/Gabriela@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Greg@2x.jpg b/static/img/avatars/avatars-jpg/Greg@2x.jpg
deleted file mode 100644
index 27d89d1ed..000000000
Binary files a/static/img/avatars/avatars-jpg/Greg@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Hind@2x.jpg b/static/img/avatars/avatars-jpg/Hind@2x.jpg
deleted file mode 100644
index d5797769b..000000000
Binary files a/static/img/avatars/avatars-jpg/Hind@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Ian@2x.jpg b/static/img/avatars/avatars-jpg/Ian@2x.jpg
deleted file mode 100644
index 0cc194b4d..000000000
Binary files a/static/img/avatars/avatars-jpg/Ian@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Isabel@2x.jpg b/static/img/avatars/avatars-jpg/Isabel@2x.jpg
deleted file mode 100644
index e2e0e4302..000000000
Binary files a/static/img/avatars/avatars-jpg/Isabel@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Jeremy@2x.jpg b/static/img/avatars/avatars-jpg/Jeremy@2x.jpg
deleted file mode 100644
index b0b6cae03..000000000
Binary files a/static/img/avatars/avatars-jpg/Jeremy@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Joel@2x.jpg b/static/img/avatars/avatars-jpg/Joel@2x.jpg
deleted file mode 100644
index dc1f78718..000000000
Binary files a/static/img/avatars/avatars-jpg/Joel@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Johan@2x.jpg b/static/img/avatars/avatars-jpg/Johan@2x.jpg
deleted file mode 100644
index a9c7453fc..000000000
Binary files a/static/img/avatars/avatars-jpg/Johan@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Julien@2x.jpg b/static/img/avatars/avatars-jpg/Julien@2x.jpg
deleted file mode 100644
index 0b42afd8f..000000000
Binary files a/static/img/avatars/avatars-jpg/Julien@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Kerim@2x.jpg b/static/img/avatars/avatars-jpg/Kerim@2x.jpg
deleted file mode 100644
index dd839e4cb..000000000
Binary files a/static/img/avatars/avatars-jpg/Kerim@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Martin@2x.jpg b/static/img/avatars/avatars-jpg/Martin@2x.jpg
deleted file mode 100644
index 1b0006171..000000000
Binary files a/static/img/avatars/avatars-jpg/Martin@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Meriem@2x.jpg b/static/img/avatars/avatars-jpg/Meriem@2x.jpg
deleted file mode 100644
index 9357941ad..000000000
Binary files a/static/img/avatars/avatars-jpg/Meriem@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Nicolas@2x.jpg b/static/img/avatars/avatars-jpg/Nicolas@2x.jpg
deleted file mode 100644
index 021b385c9..000000000
Binary files a/static/img/avatars/avatars-jpg/Nicolas@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Nour@2x.jpg b/static/img/avatars/avatars-jpg/Nour@2x.jpg
deleted file mode 100644
index 642afa666..000000000
Binary files a/static/img/avatars/avatars-jpg/Nour@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Romain@2x.jpg b/static/img/avatars/avatars-jpg/Romain@2x.jpg
deleted file mode 100644
index fc3f85dcf..000000000
Binary files a/static/img/avatars/avatars-jpg/Romain@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Sandrine@2x.jpg b/static/img/avatars/avatars-jpg/Sandrine@2x.jpg
deleted file mode 100644
index 0f6446372..000000000
Binary files a/static/img/avatars/avatars-jpg/Sandrine@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Serge@2x.jpg b/static/img/avatars/avatars-jpg/Serge@2x.jpg
deleted file mode 100644
index 903826c23..000000000
Binary files a/static/img/avatars/avatars-jpg/Serge@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Sylvain@2x.jpg b/static/img/avatars/avatars-jpg/Sylvain@2x.jpg
deleted file mode 100644
index 69c2830f1..000000000
Binary files a/static/img/avatars/avatars-jpg/Sylvain@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Thorsten@2x.jpg b/static/img/avatars/avatars-jpg/Thorsten@2x.jpg
deleted file mode 100644
index ba59fbd43..000000000
Binary files a/static/img/avatars/avatars-jpg/Thorsten@2x.jpg and /dev/null differ
diff --git a/static/img/avatars/avatars-jpg/Trung@2x.jpg b/static/img/avatars/avatars-jpg/Trung@2x.jpg
deleted file mode 100644
index 2b8da2d3a..000000000
Binary files a/static/img/avatars/avatars-jpg/Trung@2x.jpg and /dev/null differ
diff --git a/static/img/blogposts/An-SQL-Solution-for-Jupyter.png b/static/img/blogposts/An-SQL-Solution-for-Jupyter.png
deleted file mode 100644
index 1c660614d..000000000
Binary files a/static/img/blogposts/An-SQL-Solution-for-Jupyter.png and /dev/null differ
diff --git a/static/img/blogposts/How-we-Wrote-Xtensor-Episode-5-Expression-Templates.png b/static/img/blogposts/How-we-Wrote-Xtensor-Episode-5-Expression-Templates.png
deleted file mode 100644
index 1f9069b6e..000000000
Binary files a/static/img/blogposts/How-we-Wrote-Xtensor-Episode-5-Expression-Templates.png and /dev/null differ
diff --git a/static/img/blogposts/JupyterCon-is-back-in-2023.png b/static/img/blogposts/JupyterCon-is-back-in-2023.png
deleted file mode 100644
index 4f652929a..000000000
Binary files a/static/img/blogposts/JupyterCon-is-back-in-2023.png and /dev/null differ
diff --git a/static/img/blogposts/QuantStack-2022-in-review.webp b/static/img/blogposts/QuantStack-2022-in-review.webp
deleted file mode 100644
index 535da23fb..000000000
Binary files a/static/img/blogposts/QuantStack-2022-in-review.webp and /dev/null differ
diff --git a/static/img/blogposts/Recent-keyboard-navigation-improvements-in-Jupyter.png b/static/img/blogposts/Recent-keyboard-navigation-improvements-in-Jupyter.png
deleted file mode 100644
index 6e0eaf074..000000000
Binary files a/static/img/blogposts/Recent-keyboard-navigation-improvements-in-Jupyter.png and /dev/null differ
diff --git a/static/img/blogposts/Rhumba-a-Faster-R-Distribution.gif b/static/img/blogposts/Rhumba-a-Faster-R-Distribution.gif
deleted file mode 100644
index 0c86def39..000000000
Binary files a/static/img/blogposts/Rhumba-a-Faster-R-Distribution.gif and /dev/null differ
diff --git a/static/img/blogposts/Rhumba-the-fast-R-distribution-is-available-on-Windows.gif b/static/img/blogposts/Rhumba-the-fast-R-distribution-is-available-on-Windows.gif
deleted file mode 100644
index f11a9798f..000000000
Binary files a/static/img/blogposts/Rhumba-the-fast-R-distribution-is-available-on-Windows.gif and /dev/null differ
diff --git "a/static/img/blogposts/Update errored version updates version formatting by HaudinFlorence \302\267 Pull Request #2233 \302\267 conda-forge_conda-forge.github.io.html" "b/static/img/blogposts/Update errored version updates version formatting by HaudinFlorence \302\267 Pull Request #2233 \302\267 conda-forge_conda-forge.github.io.html"
deleted file mode 100644
index 40839e127..000000000
--- "a/static/img/blogposts/Update errored version updates version formatting by HaudinFlorence \302\267 Pull Request #2233 \302\267 conda-forge_conda-forge.github.io.html"
+++ /dev/null
@@ -1,10456 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Update errored version updates version formatting by HaudinFlorence · Pull Request #2233 · conda-forge/conda-forge.github.io
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Open in github.dev
-
Open in a new github.dev tab
-
Open in codespace
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Add this suggestion to a batch that can be applied as a single commit.
-
This suggestion is invalid because no changes were made to the code.
-
Suggestions cannot be applied while the pull request is closed.
-
Suggestions cannot be applied while viewing a subset of changes.
-
Only one suggestion per line can be applied in a batch.
-
Add this suggestion to a batch that can be applied as a single commit.
-
Applying suggestions on deleted lines is not supported.
-
You must change the existing code in this line in order to create a valid suggestion.
-
-
This suggestion has been applied or marked resolved.
-
Suggestions cannot be applied from pending reviews.
-
Suggestions cannot be applied on multi-line comments.
-
Suggestions cannot be applied while the pull request is queued to merge.
-
Suggestion cannot be applied right now. Please check back later.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- You can’t perform that action at this time.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Contributor
-Author
-HaudinFlorence commented
-
-I am not sure whether <a href="https://github.com/...">bot CI job</a> should be parse in the error message.
-
-
-
-
-
\ No newline at end of file
diff --git a/static/img/blogposts/2019-in-Review.png b/static/img/blogposts/full-size-images/2019-in-Review.png
similarity index 100%
rename from static/img/blogposts/2019-in-Review.png
rename to static/img/blogposts/full-size-images/2019-in-Review.png
diff --git a/static/img/blogposts/A-C++-API-for-Vega-Lite.png b/static/img/blogposts/full-size-images/A-C++-API-for-Vega-Lite.png
similarity index 100%
rename from static/img/blogposts/A-C++-API-for-Vega-Lite.png
rename to static/img/blogposts/full-size-images/A-C++-API-for-Vega-Lite.png
diff --git a/static/img/blogposts/A-Curiously-Recurring-Widget-Library.png b/static/img/blogposts/full-size-images/A-Curiously-Recurring-Widget-Library.png
similarity index 100%
rename from static/img/blogposts/A-Curiously-Recurring-Widget-Library.png
rename to static/img/blogposts/full-size-images/A-Curiously-Recurring-Widget-Library.png
diff --git a/static/img/blogposts/full-size-images/A-Diagram-Editor-for-JupyterLab.png b/static/img/blogposts/full-size-images/A-Diagram-Editor-for-JupyterLab.png
new file mode 100644
index 000000000..cc6e0b317
Binary files /dev/null and b/static/img/blogposts/full-size-images/A-Diagram-Editor-for-JupyterLab.png differ
diff --git a/static/img/blogposts/A-Jupyter-Kernel-for-SQLite.png b/static/img/blogposts/full-size-images/A-Jupyter-Kernel-for-SQLite.png
similarity index 100%
rename from static/img/blogposts/A-Jupyter-Kernel-for-SQLite.png
rename to static/img/blogposts/full-size-images/A-Jupyter-Kernel-for-SQLite.png
diff --git a/static/img/blogposts/A-Jupyter-kernel-for-GNU-Octave.png b/static/img/blogposts/full-size-images/A-Jupyter-kernel-for-GNU-Octave.png
similarity index 100%
rename from static/img/blogposts/A-Jupyter-kernel-for-GNU-Octave.png
rename to static/img/blogposts/full-size-images/A-Jupyter-kernel-for-GNU-Octave.png
diff --git a/static/img/blogposts/A-New-Python-Kernel-for-Jupyter.png b/static/img/blogposts/full-size-images/A-New-Python-Kernel-for-Jupyter.png
similarity index 100%
rename from static/img/blogposts/A-New-Python-Kernel-for-Jupyter.png
rename to static/img/blogposts/full-size-images/A-New-Python-Kernel-for-Jupyter.png
diff --git a/static/img/blogposts/A-Slideshow-template-for-Voila.png b/static/img/blogposts/full-size-images/A-Slideshow-template-for-Voila.png
similarity index 100%
rename from static/img/blogposts/A-Slideshow-template-for-Voila.png
rename to static/img/blogposts/full-size-images/A-Slideshow-template-for-Voila.png
diff --git a/static/img/blogposts/full-size-images/A-Visual-Debuger-for-Jupyter.png b/static/img/blogposts/full-size-images/A-Visual-Debuger-for-Jupyter.png
new file mode 100644
index 000000000..76cebb31a
Binary files /dev/null and b/static/img/blogposts/full-size-images/A-Visual-Debuger-for-Jupyter.png differ
diff --git a/static/img/blogposts/A-theme-editor-for-JupyterLab.png b/static/img/blogposts/full-size-images/A-theme-editor-for-JupyterLab.png
similarity index 100%
rename from static/img/blogposts/A-theme-editor-for-JupyterLab.png
rename to static/img/blogposts/full-size-images/A-theme-editor-for-JupyterLab.png
diff --git a/static/img/blogposts/full-size-images/Abracadabra-Bringing-the-Magics-to-Xeus-Python.png b/static/img/blogposts/full-size-images/Abracadabra-Bringing-the-Magics-to-Xeus-Python.png
new file mode 100644
index 000000000..d263e30b2
Binary files /dev/null and b/static/img/blogposts/full-size-images/Abracadabra-Bringing-the-Magics-to-Xeus-Python.png differ
diff --git a/static/img/blogposts/full-size-images/Accelerating-Arrow.png b/static/img/blogposts/full-size-images/Accelerating-Arrow.png
new file mode 100644
index 000000000..b72197bc0
Binary files /dev/null and b/static/img/blogposts/full-size-images/Accelerating-Arrow.png differ
diff --git a/static/img/blogposts/Accelerating-JupyterLab.png b/static/img/blogposts/full-size-images/Accelerating-JupyterLab.png
similarity index 100%
rename from static/img/blogposts/Accelerating-JupyterLab.png
rename to static/img/blogposts/full-size-images/Accelerating-JupyterLab.png
diff --git a/static/img/blogposts/full-size-images/An-Interview-with-Sylvain-Corlay.png b/static/img/blogposts/full-size-images/An-Interview-with-Sylvain-Corlay.png
new file mode 100644
index 000000000..eb5ef2b7d
Binary files /dev/null and b/static/img/blogposts/full-size-images/An-Interview-with-Sylvain-Corlay.png differ
diff --git a/static/img/blogposts/full-size-images/An-SQL-Solution-for-Jupyter.png b/static/img/blogposts/full-size-images/An-SQL-Solution-for-Jupyter.png
new file mode 100644
index 000000000..64a2e0296
Binary files /dev/null and b/static/img/blogposts/full-size-images/An-SQL-Solution-for-Jupyter.png differ
diff --git a/static/img/blogposts/And-Voici.png b/static/img/blogposts/full-size-images/And-Voici.png
similarity index 100%
rename from static/img/blogposts/And-Voici.png
rename to static/img/blogposts/full-size-images/And-Voici.png
diff --git a/static/img/blogposts/And-Voila.png b/static/img/blogposts/full-size-images/And-Voila.png
similarity index 100%
rename from static/img/blogposts/And-Voila.png
rename to static/img/blogposts/full-size-images/And-Voila.png
diff --git a/static/img/blogposts/Announcing-Jupyter-Notebook-7.jpg b/static/img/blogposts/full-size-images/Announcing-Jupyter-Notebook-7.jpg
similarity index 100%
rename from static/img/blogposts/Announcing-Jupyter-Notebook-7.jpg
rename to static/img/blogposts/full-size-images/Announcing-Jupyter-Notebook-7.jpg
diff --git a/static/img/blogposts/full-size-images/Announcing-JupyterCAD-3.0.png b/static/img/blogposts/full-size-images/Announcing-JupyterCAD-3.0.png
new file mode 100644
index 000000000..ab28fe28e
Binary files /dev/null and b/static/img/blogposts/full-size-images/Announcing-JupyterCAD-3.0.png differ
diff --git a/static/img/blogposts/Announcing-PyData-Paris-2024.png b/static/img/blogposts/full-size-images/Announcing-PyData-Paris-2024.png
similarity index 100%
rename from static/img/blogposts/Announcing-PyData-Paris-2024.png
rename to static/img/blogposts/full-size-images/Announcing-PyData-Paris-2024.png
diff --git a/static/img/blogposts/Announcing-the-2023-Jupyter-Distinguished-Contributors.png b/static/img/blogposts/full-size-images/Announcing-the-2023-Jupyter-Distinguished-Contributors.png
similarity index 100%
rename from static/img/blogposts/Announcing-the-2023-Jupyter-Distinguished-Contributors.png
rename to static/img/blogposts/full-size-images/Announcing-the-2023-Jupyter-Distinguished-Contributors.png
diff --git a/static/img/blogposts/full-size-images/Arbalister.png b/static/img/blogposts/full-size-images/Arbalister.png
new file mode 100644
index 000000000..6e2d9b130
Binary files /dev/null and b/static/img/blogposts/full-size-images/Arbalister.png differ
diff --git a/static/img/blogposts/full-size-images/Arrow-a-Year-in-Review.png b/static/img/blogposts/full-size-images/Arrow-a-Year-in-Review.png
new file mode 100644
index 000000000..2fe10f854
Binary files /dev/null and b/static/img/blogposts/full-size-images/Arrow-a-Year-in-Review.png differ
diff --git a/static/img/blogposts/full-size-images/Async-Xeus-Python.png b/static/img/blogposts/full-size-images/Async-Xeus-Python.png
new file mode 100644
index 000000000..6b38fe58e
Binary files /dev/null and b/static/img/blogposts/full-size-images/Async-Xeus-Python.png differ
diff --git a/static/img/blogposts/full-size-images/Authoring-Custom-Jupyter-Widgets.png b/static/img/blogposts/full-size-images/Authoring-Custom-Jupyter-Widgets.png
new file mode 100644
index 000000000..5be50cd41
Binary files /dev/null and b/static/img/blogposts/full-size-images/Authoring-Custom-Jupyter-Widgets.png differ
diff --git a/static/img/blogposts/full-size-images/Automate-releases-jupyter-releaser.png b/static/img/blogposts/full-size-images/Automate-releases-jupyter-releaser.png
new file mode 100644
index 000000000..3192e8132
Binary files /dev/null and b/static/img/blogposts/full-size-images/Automate-releases-jupyter-releaser.png differ
diff --git a/static/img/blogposts/Building-a-Calculator-Jupyter-Kernel.png b/static/img/blogposts/full-size-images/Building-a-Calculator-Jupyter-Kernel.png
similarity index 100%
rename from static/img/blogposts/Building-a-Calculator-Jupyter-Kernel.png
rename to static/img/blogposts/full-size-images/Building-a-Calculator-Jupyter-Kernel.png
diff --git a/static/img/blogposts/Building-an-Open-Source-Continuous-Benchmark-System.png b/static/img/blogposts/full-size-images/Building-an-Open-Source-Continuous-Benchmark-System.png
similarity index 100%
rename from static/img/blogposts/Building-an-Open-Source-Continuous-Benchmark-System.png
rename to static/img/blogposts/full-size-images/Building-an-Open-Source-Continuous-Benchmark-System.png
diff --git a/static/img/blogposts/full-size-images/Bye-bye-Boost-SIMD-Welcome-XSimd.png b/static/img/blogposts/full-size-images/Bye-bye-Boost-SIMD-Welcome-XSimd.png
new file mode 100644
index 000000000..4cf782c56
Binary files /dev/null and b/static/img/blogposts/full-size-images/Bye-bye-Boost-SIMD-Welcome-XSimd.png differ
diff --git a/static/img/blogposts/full-size-images/CPP-in-JupyterLite.png b/static/img/blogposts/full-size-images/CPP-in-JupyterLite.png
new file mode 100644
index 000000000..5c2274694
Binary files /dev/null and b/static/img/blogposts/full-size-images/CPP-in-JupyterLite.png differ
diff --git a/static/img/blogposts/Collaborative-CAD-in-JupyterLab.png b/static/img/blogposts/full-size-images/Collaborative-CAD-in-JupyterLab.png
similarity index 100%
rename from static/img/blogposts/Collaborative-CAD-in-JupyterLab.png
rename to static/img/blogposts/full-size-images/Collaborative-CAD-in-JupyterLab.png
diff --git a/static/img/blogposts/full-size-images/Collaborative-GIS.png b/static/img/blogposts/full-size-images/Collaborative-GIS.png
new file mode 100644
index 000000000..aa93dcfb5
Binary files /dev/null and b/static/img/blogposts/full-size-images/Collaborative-GIS.png differ
diff --git a/static/img/blogposts/full-size-images/Collaborative-Qt.png b/static/img/blogposts/full-size-images/Collaborative-Qt.png
new file mode 100644
index 000000000..7ee0c73f0
Binary files /dev/null and b/static/img/blogposts/full-size-images/Collaborative-Qt.png differ
diff --git a/static/img/blogposts/Commit.png b/static/img/blogposts/full-size-images/Commit.png
similarity index 100%
rename from static/img/blogposts/Commit.png
rename to static/img/blogposts/full-size-images/Commit.png
diff --git a/static/img/blogposts/full-size-images/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.png b/static/img/blogposts/full-size-images/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.png
new file mode 100644
index 000000000..119f377e9
Binary files /dev/null and b/static/img/blogposts/full-size-images/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.png differ
diff --git a/static/img/blogposts/full-size-images/Congratulations-Distinguished-Contributors-2025-05.png b/static/img/blogposts/full-size-images/Congratulations-Distinguished-Contributors-2025-05.png
new file mode 100644
index 000000000..1b1e26628
Binary files /dev/null and b/static/img/blogposts/full-size-images/Congratulations-Distinguished-Contributors-2025-05.png differ
diff --git a/static/img/blogposts/full-size-images/Congratulations-Distinguished-Contributors-2026-06.png b/static/img/blogposts/full-size-images/Congratulations-Distinguished-Contributors-2026-06.png
new file mode 100644
index 000000000..42ff39e90
Binary files /dev/null and b/static/img/blogposts/full-size-images/Congratulations-Distinguished-Contributors-2026-06.png differ
diff --git a/static/img/blogposts/Congratulations-Distinguished-Contributors.png b/static/img/blogposts/full-size-images/Congratulations-Distinguished-Contributors.png
similarity index 100%
rename from static/img/blogposts/Congratulations-Distinguished-Contributors.png
rename to static/img/blogposts/full-size-images/Congratulations-Distinguished-Contributors.png
diff --git a/static/img/blogposts/full-size-images/Create-layers-JupyterGIS.png b/static/img/blogposts/full-size-images/Create-layers-JupyterGIS.png
new file mode 100644
index 000000000..41c9f6afe
Binary files /dev/null and b/static/img/blogposts/full-size-images/Create-layers-JupyterGIS.png differ
diff --git a/static/img/blogposts/Cross-platform-Conda-Packages-for-ROS.jpg b/static/img/blogposts/full-size-images/Cross-platform-Conda-Packages-for-ROS.jpg
similarity index 100%
rename from static/img/blogposts/Cross-platform-Conda-Packages-for-ROS.jpg
rename to static/img/blogposts/full-size-images/Cross-platform-Conda-Packages-for-ROS.jpg
diff --git a/static/img/blogposts/full-size-images/Dashboarding-with-JupyterLab-3-0.png b/static/img/blogposts/full-size-images/Dashboarding-with-JupyterLab-3-0.png
new file mode 100644
index 000000000..10b6df563
Binary files /dev/null and b/static/img/blogposts/full-size-images/Dashboarding-with-JupyterLab-3-0.png differ
diff --git a/static/img/blogposts/full-size-images/Designing-Language-Bindings-with-Xtensor.png b/static/img/blogposts/full-size-images/Designing-Language-Bindings-with-Xtensor.png
new file mode 100644
index 000000000..be5164a0a
Binary files /dev/null and b/static/img/blogposts/full-size-images/Designing-Language-Bindings-with-Xtensor.png differ
diff --git a/static/img/blogposts/full-size-images/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.png b/static/img/blogposts/full-size-images/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.png
new file mode 100644
index 000000000..e036ea05d
Binary files /dev/null and b/static/img/blogposts/full-size-images/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.png differ
diff --git a/static/img/blogposts/full-size-images/Enabling-the-JupyterLab-Debugger-with-ipykernel.png b/static/img/blogposts/full-size-images/Enabling-the-JupyterLab-Debugger-with-ipykernel.png
new file mode 100644
index 000000000..d1ee012f6
Binary files /dev/null and b/static/img/blogposts/full-size-images/Enabling-the-JupyterLab-Debugger-with-ipykernel.png differ
diff --git a/static/img/blogposts/Fast-Reductions-in-Xtensor-with-Xsimd.png b/static/img/blogposts/full-size-images/Fast-Reductions-in-Xtensor-with-Xsimd.png
similarity index 100%
rename from static/img/blogposts/Fast-Reductions-in-Xtensor-with-Xsimd.png
rename to static/img/blogposts/full-size-images/Fast-Reductions-in-Xtensor-with-Xsimd.png
diff --git a/static/img/blogposts/Faster-Xtensor.png b/static/img/blogposts/full-size-images/Faster-Xtensor.png
similarity index 100%
rename from static/img/blogposts/Faster-Xtensor.png
rename to static/img/blogposts/full-size-images/Faster-Xtensor.png
diff --git a/static/img/blogposts/Field-Report-on-the-Jupyter-Community-Workshop-on-Dashboarding.png b/static/img/blogposts/full-size-images/Field-Report-on-the-Jupyter-Community-Workshop-on-Dashboarding.png
similarity index 100%
rename from static/img/blogposts/Field-Report-on-the-Jupyter-Community-Workshop-on-Dashboarding.png
rename to static/img/blogposts/full-size-images/Field-Report-on-the-Jupyter-Community-Workshop-on-Dashboarding.png
diff --git a/static/img/blogposts/Field-Report-on-the-Kernel-Community-Workshop.png b/static/img/blogposts/full-size-images/Field-Report-on-the-Kernel-Community-Workshop.png
similarity index 100%
rename from static/img/blogposts/Field-Report-on-the-Kernel-Community-Workshop.png
rename to static/img/blogposts/full-size-images/Field-Report-on-the-Kernel-Community-Workshop.png
diff --git a/static/img/blogposts/From-Jupyter-to-the-Moon.png b/static/img/blogposts/full-size-images/From-Jupyter-to-the-Moon.png
similarity index 100%
rename from static/img/blogposts/From-Jupyter-to-the-Moon.png
rename to static/img/blogposts/full-size-images/From-Jupyter-to-the-Moon.png
diff --git a/static/img/blogposts/full-size-images/Genomic-Data-representation-in-Jupyter.png b/static/img/blogposts/full-size-images/Genomic-Data-representation-in-Jupyter.png
new file mode 100644
index 000000000..37daad95d
Binary files /dev/null and b/static/img/blogposts/full-size-images/Genomic-Data-representation-in-Jupyter.png differ
diff --git a/static/img/blogposts/HTML5--based-renderer-for-Matplotlib-in-Pyodide.png b/static/img/blogposts/full-size-images/HTML5--based-renderer-for-Matplotlib-in-Pyodide.png
similarity index 100%
rename from static/img/blogposts/HTML5--based-renderer-for-Matplotlib-in-Pyodide.png
rename to static/img/blogposts/full-size-images/HTML5--based-renderer-for-Matplotlib-in-Pyodide.png
diff --git a/static/img/blogposts/How-we-Wrote-Xtensor-Episode-1-N-Dimensional-Containers.png b/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-1-N-Dimensional-Containers.png
similarity index 100%
rename from static/img/blogposts/How-we-Wrote-Xtensor-Episode-1-N-Dimensional-Containers.png
rename to static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-1-N-Dimensional-Containers.png
diff --git a/static/img/blogposts/How-we-Wrote-Xtensor-Episode-2-Access-Operators.png b/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-2-Access-Operators.png
similarity index 100%
rename from static/img/blogposts/How-we-Wrote-Xtensor-Episode-2-Access-Operators.png
rename to static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-2-Access-Operators.png
diff --git a/static/img/blogposts/How-we-Wrote-Xtensor-Episode-3-The-Constructors.png b/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-3-The-Constructors.png
similarity index 100%
rename from static/img/blogposts/How-we-Wrote-Xtensor-Episode-3-The-Constructors.png
rename to static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-3-The-Constructors.png
diff --git a/static/img/blogposts/How-we-Wrote-Xtensor-Episode-4-Value-Semantics.png b/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-4-Value-Semantics.png
similarity index 100%
rename from static/img/blogposts/How-we-Wrote-Xtensor-Episode-4-Value-Semantics.png
rename to static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-4-Value-Semantics.png
diff --git a/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-5-Expression-Templates.png b/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-5-Expression-Templates.png
new file mode 100644
index 000000000..5df4a64d9
Binary files /dev/null and b/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-5-Expression-Templates.png differ
diff --git a/static/img/blogposts/How-we-Wrote-Xtensor-Episode-6-Operator-Overloading.png b/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-6-Operator-Overloading.png
similarity index 100%
rename from static/img/blogposts/How-we-Wrote-Xtensor-Episode-6-Operator-Overloading.png
rename to static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-6-Operator-Overloading.png
diff --git a/static/img/blogposts/How-we-Wrote-Xtensor-Episode-7-Broadcasting.png b/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-7-Broadcasting.png
similarity index 100%
rename from static/img/blogposts/How-we-Wrote-Xtensor-Episode-7-Broadcasting.png
rename to static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-7-Broadcasting.png
diff --git a/static/img/blogposts/How-we-Wrote-Xtensor-Episode-8-Iterators.png b/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-8-Iterators.png
similarity index 100%
rename from static/img/blogposts/How-we-Wrote-Xtensor-Episode-8-Iterators.png
rename to static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-8-Iterators.png
diff --git a/static/img/blogposts/How-we-made-Jupyter-notebooks-collaborative-with-Yjs.png b/static/img/blogposts/full-size-images/How-we-made-Jupyter-notebooks-collaborative-with-Yjs.png
similarity index 100%
rename from static/img/blogposts/How-we-made-Jupyter-notebooks-collaborative-with-Yjs.png
rename to static/img/blogposts/full-size-images/How-we-made-Jupyter-notebooks-collaborative-with-Yjs.png
diff --git a/static/img/blogposts/IPycanvas-a-Python-Canvas-for-Jupyter.png b/static/img/blogposts/full-size-images/IPycanvas-a-Python-Canvas-for-Jupyter.png
similarity index 100%
rename from static/img/blogposts/IPycanvas-a-Python-Canvas-for-Jupyter.png
rename to static/img/blogposts/full-size-images/IPycanvas-a-Python-Canvas-for-Jupyter.png
diff --git a/static/img/blogposts/Improving-the-accessibility-of-Jupyter.png b/static/img/blogposts/full-size-images/Improving-the-accessibility-of-Jupyter.png
similarity index 100%
rename from static/img/blogposts/Improving-the-accessibility-of-Jupyter.png
rename to static/img/blogposts/full-size-images/Improving-the-accessibility-of-Jupyter.png
diff --git a/static/img/blogposts/In-memoriam-Fanny-Loustau-Chartez.jpg b/static/img/blogposts/full-size-images/In-memoriam-Fanny-Loustau-Chartez.jpg
similarity index 100%
rename from static/img/blogposts/In-memoriam-Fanny-Loustau-Chartez.jpg
rename to static/img/blogposts/full-size-images/In-memoriam-Fanny-Loustau-Chartez.jpg
diff --git a/static/img/blogposts/Inspector-JupyterLab.png b/static/img/blogposts/full-size-images/Inspector-JupyterLab.png
similarity index 100%
rename from static/img/blogposts/Inspector-JupyterLab.png
rename to static/img/blogposts/full-size-images/Inspector-JupyterLab.png
diff --git a/static/img/blogposts/Interactive-C++-for-Data-Science.png b/static/img/blogposts/full-size-images/Interactive-C++-for-Data-Science.png
similarity index 100%
rename from static/img/blogposts/Interactive-C++-for-Data-Science.png
rename to static/img/blogposts/full-size-images/Interactive-C++-for-Data-Science.png
diff --git a/static/img/blogposts/full-size-images/Interactive-GIS-in-Jupyter-with-IPyleaflet.png b/static/img/blogposts/full-size-images/Interactive-GIS-in-Jupyter-with-IPyleaflet.png
new file mode 100644
index 000000000..394e30576
Binary files /dev/null and b/static/img/blogposts/full-size-images/Interactive-GIS-in-Jupyter-with-IPyleaflet.png differ
diff --git a/static/img/blogposts/Interactive-Graph-Visualization-in-Jupyter-with-IPycytoscape.png b/static/img/blogposts/full-size-images/Interactive-Graph-Visualization-in-Jupyter-with-IPycytoscape.png
similarity index 100%
rename from static/img/blogposts/Interactive-Graph-Visualization-in-Jupyter-with-IPycytoscape.png
rename to static/img/blogposts/full-size-images/Interactive-Graph-Visualization-in-Jupyter-with-IPycytoscape.png
diff --git a/static/img/blogposts/Interactive-Mapping-with-ipyopenlayers.png b/static/img/blogposts/full-size-images/Interactive-Mapping-with-ipyopenlayers.png
similarity index 100%
rename from static/img/blogposts/Interactive-Mapping-with-ipyopenlayers.png
rename to static/img/blogposts/full-size-images/Interactive-Mapping-with-ipyopenlayers.png
diff --git a/static/img/blogposts/Interactive-Workflows-for-C++-with-Jupyter.png b/static/img/blogposts/full-size-images/Interactive-Workflows-for-C++-with-Jupyter.png
similarity index 100%
rename from static/img/blogposts/Interactive-Workflows-for-C++-with-Jupyter.png
rename to static/img/blogposts/full-size-images/Interactive-Workflows-for-C++-with-Jupyter.png
diff --git a/static/img/blogposts/Interactive-spreadsheets-in-Jupyter.png b/static/img/blogposts/full-size-images/Interactive-spreadsheets-in-Jupyter.png
similarity index 100%
rename from static/img/blogposts/Interactive-spreadsheets-in-Jupyter.png
rename to static/img/blogposts/full-size-images/Interactive-spreadsheets-in-Jupyter.png
diff --git a/static/img/blogposts/Interpreter-C++-for-GIS-with-Jupyter.png b/static/img/blogposts/full-size-images/Interpreter-C++-for-GIS-with-Jupyter.png
similarity index 100%
rename from static/img/blogposts/Interpreter-C++-for-GIS-with-Jupyter.png
rename to static/img/blogposts/full-size-images/Interpreter-C++-for-GIS-with-Jupyter.png
diff --git a/static/img/blogposts/Introducing-Mamba-2-0.png b/static/img/blogposts/full-size-images/Introducing-Mamba-2-0.png
similarity index 100%
rename from static/img/blogposts/Introducing-Mamba-2-0.png
rename to static/img/blogposts/full-size-images/Introducing-Mamba-2-0.png
diff --git a/static/img/blogposts/full-size-images/Introducing-Mamba-2-6.png b/static/img/blogposts/full-size-images/Introducing-Mamba-2-6.png
new file mode 100644
index 000000000..747bf3199
Binary files /dev/null and b/static/img/blogposts/full-size-images/Introducing-Mamba-2-6.png differ
diff --git a/static/img/blogposts/full-size-images/Introducing-Notebook-Link.png b/static/img/blogposts/full-size-images/Introducing-Notebook-Link.png
new file mode 100644
index 000000000..3beb2acde
Binary files /dev/null and b/static/img/blogposts/full-size-images/Introducing-Notebook-Link.png differ
diff --git a/static/img/blogposts/Introducing-Scikit-Geometry.png b/static/img/blogposts/full-size-images/Introducing-Scikit-Geometry.png
similarity index 100%
rename from static/img/blogposts/Introducing-Scikit-Geometry.png
rename to static/img/blogposts/full-size-images/Introducing-Scikit-Geometry.png
diff --git a/static/img/blogposts/full-size-images/Introducing-Sparrow-IPC.png b/static/img/blogposts/full-size-images/Introducing-Sparrow-IPC.png
new file mode 100644
index 000000000..066da0394
Binary files /dev/null and b/static/img/blogposts/full-size-images/Introducing-Sparrow-IPC.png differ
diff --git a/static/img/blogposts/Introducing-Templates-for-Jupyter-Widget-Layouts.png b/static/img/blogposts/full-size-images/Introducing-Templates-for-Jupyter-Widget-Layouts.png
similarity index 100%
rename from static/img/blogposts/Introducing-Templates-for-Jupyter-Widget-Layouts.png
rename to static/img/blogposts/full-size-images/Introducing-Templates-for-Jupyter-Widget-Layouts.png
diff --git a/static/img/blogposts/Ipydatagrid-is-now-part-of-ProjectJupyter.png b/static/img/blogposts/full-size-images/Ipydatagrid-is-now-part-of-ProjectJupyter.png
similarity index 100%
rename from static/img/blogposts/Ipydatagrid-is-now-part-of-ProjectJupyter.png
rename to static/img/blogposts/full-size-images/Ipydatagrid-is-now-part-of-ProjectJupyter.png
diff --git a/static/img/blogposts/Ipygany-Jupyter-into-the-Third-Dimension.png b/static/img/blogposts/full-size-images/Ipygany-Jupyter-into-the-Third-Dimension.png
similarity index 100%
rename from static/img/blogposts/Ipygany-Jupyter-into-the-Third-Dimension.png
rename to static/img/blogposts/full-size-images/Ipygany-Jupyter-into-the-Third-Dimension.png
diff --git a/static/img/blogposts/Jupyter-Cytoscape.png b/static/img/blogposts/full-size-images/Jupyter-Cytoscape.png
similarity index 100%
rename from static/img/blogposts/Jupyter-Cytoscape.png
rename to static/img/blogposts/full-size-images/Jupyter-Cytoscape.png
diff --git a/static/img/blogposts/Jupyter-Everywhere.jpg b/static/img/blogposts/full-size-images/Jupyter-Everywhere.jpg
similarity index 100%
rename from static/img/blogposts/Jupyter-Everywhere.jpg
rename to static/img/blogposts/full-size-images/Jupyter-Everywhere.jpg
diff --git a/static/img/blogposts/Jupyter-Games.png b/static/img/blogposts/full-size-images/Jupyter-Games.png
similarity index 100%
rename from static/img/blogposts/Jupyter-Games.png
rename to static/img/blogposts/full-size-images/Jupyter-Games.png
diff --git a/static/img/blogposts/Jupyter-Receives-the-ACM-Software-System-Award.png b/static/img/blogposts/full-size-images/Jupyter-Receives-the-ACM-Software-System-Award.png
similarity index 100%
rename from static/img/blogposts/Jupyter-Receives-the-ACM-Software-System-Award.png
rename to static/img/blogposts/full-size-images/Jupyter-Receives-the-ACM-Software-System-Award.png
diff --git a/static/img/blogposts/Jupyter-WebAssembly-Python.png b/static/img/blogposts/full-size-images/Jupyter-WebAssembly-Python.png
similarity index 100%
rename from static/img/blogposts/Jupyter-WebAssembly-Python.png
rename to static/img/blogposts/full-size-images/Jupyter-WebAssembly-Python.png
diff --git a/static/img/blogposts/JupyterCAD-2-0.png b/static/img/blogposts/full-size-images/JupyterCAD-2-0.png
similarity index 100%
rename from static/img/blogposts/JupyterCAD-2-0.png
rename to static/img/blogposts/full-size-images/JupyterCAD-2-0.png
diff --git a/static/img/blogposts/JupyterCon-2023-recordings-now-live-on-YouTube.png b/static/img/blogposts/full-size-images/JupyterCon-2023-recordings-now-live-on-YouTube.png
similarity index 100%
rename from static/img/blogposts/JupyterCon-2023-recordings-now-live-on-YouTube.png
rename to static/img/blogposts/full-size-images/JupyterCon-2023-recordings-now-live-on-YouTube.png
diff --git a/static/img/blogposts/full-size-images/JupyterCon-is-back-in-2023.png b/static/img/blogposts/full-size-images/JupyterCon-is-back-in-2023.png
new file mode 100644
index 000000000..9f25fef95
Binary files /dev/null and b/static/img/blogposts/full-size-images/JupyterCon-is-back-in-2023.png differ
diff --git a/static/img/blogposts/full-size-images/JupyterGIS-Next-Level.png b/static/img/blogposts/full-size-images/JupyterGIS-Next-Level.png
new file mode 100644
index 000000000..df1eceb50
Binary files /dev/null and b/static/img/blogposts/full-size-images/JupyterGIS-Next-Level.png differ
diff --git a/static/img/blogposts/JupyterGIS.png b/static/img/blogposts/full-size-images/JupyterGIS.png
similarity index 100%
rename from static/img/blogposts/JupyterGIS.png
rename to static/img/blogposts/full-size-images/JupyterGIS.png
diff --git a/static/img/blogposts/JupyterLab-3-0-is-Released.png b/static/img/blogposts/full-size-images/JupyterLab-3-0-is-Released.png
similarity index 100%
rename from static/img/blogposts/JupyterLab-3-0-is-Released.png
rename to static/img/blogposts/full-size-images/JupyterLab-3-0-is-Released.png
diff --git a/static/img/blogposts/full-size-images/JupyterLab-44.png b/static/img/blogposts/full-size-images/JupyterLab-44.png
new file mode 100644
index 000000000..f1b229c40
Binary files /dev/null and b/static/img/blogposts/full-size-images/JupyterLab-44.png differ
diff --git a/static/img/blogposts/full-size-images/JupyterLab-45.png b/static/img/blogposts/full-size-images/JupyterLab-45.png
new file mode 100644
index 000000000..5c4807a4f
Binary files /dev/null and b/static/img/blogposts/full-size-images/JupyterLab-45.png differ
diff --git a/static/img/blogposts/JupyterLab-the-Cloud-Robotics-Command-Station.png b/static/img/blogposts/full-size-images/JupyterLab-the-Cloud-Robotics-Command-Station.png
similarity index 100%
rename from static/img/blogposts/JupyterLab-the-Cloud-Robotics-Command-Station.png
rename to static/img/blogposts/full-size-images/JupyterLab-the-Cloud-Robotics-Command-Station.png
diff --git a/static/img/blogposts/full-size-images/JupyterLite-06.png b/static/img/blogposts/full-size-images/JupyterLite-06.png
new file mode 100644
index 000000000..85c322bba
Binary files /dev/null and b/static/img/blogposts/full-size-images/JupyterLite-06.png differ
diff --git a/static/img/blogposts/full-size-images/JupyterLite-07.png b/static/img/blogposts/full-size-images/JupyterLite-07.png
new file mode 100644
index 000000000..c65d61beb
Binary files /dev/null and b/static/img/blogposts/full-size-images/JupyterLite-07.png differ
diff --git a/static/img/blogposts/full-size-images/JupyterLite-08.png b/static/img/blogposts/full-size-images/JupyterLite-08.png
new file mode 100644
index 000000000..c3325c7af
Binary files /dev/null and b/static/img/blogposts/full-size-images/JupyterLite-08.png differ
diff --git a/static/img/blogposts/full-size-images/JupyterLite-Joins-Jupyter.png b/static/img/blogposts/full-size-images/JupyterLite-Joins-Jupyter.png
new file mode 100644
index 000000000..bac27fd0b
Binary files /dev/null and b/static/img/blogposts/full-size-images/JupyterLite-Joins-Jupyter.png differ
diff --git a/static/img/blogposts/full-size-images/Jupyterlite-Terminal.png b/static/img/blogposts/full-size-images/Jupyterlite-Terminal.png
new file mode 100644
index 000000000..d3cb56182
Binary files /dev/null and b/static/img/blogposts/full-size-images/Jupyterlite-Terminal.png differ
diff --git a/static/img/blogposts/Le-calcul-haute-performance-au-service-de-l'innovation-in-French.png b/static/img/blogposts/full-size-images/Le-calcul-haute-performance-au-service-de-l'innovation-in-French.png
similarity index 100%
rename from static/img/blogposts/Le-calcul-haute-performance-au-service-de-l'innovation-in-French.png
rename to static/img/blogposts/full-size-images/Le-calcul-haute-performance-au-service-de-l'innovation-in-French.png
diff --git a/static/img/blogposts/Looking-at-notebooks-from-a-new-perspective.png b/static/img/blogposts/full-size-images/Looking-at-notebooks-from-a-new-perspective.png
similarity index 100%
rename from static/img/blogposts/Looking-at-notebooks-from-a-new-perspective.png
rename to static/img/blogposts/full-size-images/Looking-at-notebooks-from-a-new-perspective.png
diff --git a/static/img/blogposts/Making-Conda-Fast-Again.png b/static/img/blogposts/full-size-images/Making-Conda-Fast-Again.png
similarity index 100%
rename from static/img/blogposts/Making-Conda-Fast-Again.png
rename to static/img/blogposts/full-size-images/Making-Conda-Fast-Again.png
diff --git a/static/img/blogposts/Mamba-0-15-0.png b/static/img/blogposts/full-size-images/Mamba-0-15-0.png
similarity index 100%
rename from static/img/blogposts/Mamba-0-15-0.png
rename to static/img/blogposts/full-size-images/Mamba-0-15-0.png
diff --git a/static/img/blogposts/Mamba-Development-News.png b/static/img/blogposts/full-size-images/Mamba-Development-News.png
similarity index 100%
rename from static/img/blogposts/Mamba-Development-News.png
rename to static/img/blogposts/full-size-images/Mamba-Development-News.png
diff --git a/static/img/blogposts/Mamba-meets-JupyterLite.png b/static/img/blogposts/full-size-images/Mamba-meets-JupyterLite.png
similarity index 100%
rename from static/img/blogposts/Mamba-meets-JupyterLite.png
rename to static/img/blogposts/full-size-images/Mamba-meets-JupyterLite.png
diff --git a/static/img/blogposts/Managing-conflicts-with-Mamba.png b/static/img/blogposts/full-size-images/Managing-conflicts-with-Mamba.png
similarity index 100%
rename from static/img/blogposts/Managing-conflicts-with-Mamba.png
rename to static/img/blogposts/full-size-images/Managing-conflicts-with-Mamba.png
diff --git a/static/img/blogposts/Meet-Xeus-R-a-future-proof-Jupyter-kernel-for-R.png b/static/img/blogposts/full-size-images/Meet-Xeus-R-a-future-proof-Jupyter-kernel-for-R.png
similarity index 100%
rename from static/img/blogposts/Meet-Xeus-R-a-future-proof-Jupyter-kernel-for-R.png
rename to static/img/blogposts/full-size-images/Meet-Xeus-R-a-future-proof-Jupyter-kernel-for-R.png
diff --git a/static/img/blogposts/Memestra.png b/static/img/blogposts/full-size-images/Memestra.png
similarity index 100%
rename from static/img/blogposts/Memestra.png
rename to static/img/blogposts/full-size-images/Memestra.png
diff --git a/static/img/blogposts/Need-for-speed-Voila-edition.png b/static/img/blogposts/full-size-images/Need-for-speed-Voila-edition.png
similarity index 100%
rename from static/img/blogposts/Need-for-speed-Voila-edition.png
rename to static/img/blogposts/full-size-images/Need-for-speed-Voila-edition.png
diff --git a/static/img/blogposts/full-size-images/Notebook-Link-Prefix.png b/static/img/blogposts/full-size-images/Notebook-Link-Prefix.png
new file mode 100644
index 000000000..5eede2dbf
Binary files /dev/null and b/static/img/blogposts/full-size-images/Notebook-Link-Prefix.png differ
diff --git a/static/img/blogposts/full-size-images/Numba-Browser.png b/static/img/blogposts/full-size-images/Numba-Browser.png
new file mode 100644
index 000000000..230aa48b3
Binary files /dev/null and b/static/img/blogposts/full-size-images/Numba-Browser.png differ
diff --git a/static/img/blogposts/full-size-images/Octave-Lite.png b/static/img/blogposts/full-size-images/Octave-Lite.png
new file mode 100644
index 000000000..817834604
Binary files /dev/null and b/static/img/blogposts/full-size-images/Octave-Lite.png differ
diff --git a/static/img/blogposts/full-size-images/Open-Software-Packaging-for-Science.png b/static/img/blogposts/full-size-images/Open-Software-Packaging-for-Science.png
new file mode 100644
index 000000000..747bf3199
Binary files /dev/null and b/static/img/blogposts/full-size-images/Open-Software-Packaging-for-Science.png differ
diff --git a/static/img/blogposts/PLASMA-a-Learning-Platform-Powered-by-Jupyter.png b/static/img/blogposts/full-size-images/PLASMA-a-Learning-Platform-Powered-by-Jupyter.png
similarity index 100%
rename from static/img/blogposts/PLASMA-a-Learning-Platform-Powered-by-Jupyter.png
rename to static/img/blogposts/full-size-images/PLASMA-a-Learning-Platform-Powered-by-Jupyter.png
diff --git a/static/img/blogposts/Plug-your-application-into-the-Jupyter-world.png b/static/img/blogposts/full-size-images/Plug-your-application-into-the-Jupyter-world.png
similarity index 100%
rename from static/img/blogposts/Plug-your-application-into-the-Jupyter-world.png
rename to static/img/blogposts/full-size-images/Plug-your-application-into-the-Jupyter-world.png
diff --git a/static/img/blogposts/full-size-images/PyData-Paris-2025-Keynotes.png b/static/img/blogposts/full-size-images/PyData-Paris-2025-Keynotes.png
new file mode 100644
index 000000000..f3383f0e2
Binary files /dev/null and b/static/img/blogposts/full-size-images/PyData-Paris-2025-Keynotes.png differ
diff --git a/static/img/blogposts/QuantStack-2021-in-review.png b/static/img/blogposts/full-size-images/QuantStack-2021-in-review.png
similarity index 100%
rename from static/img/blogposts/QuantStack-2021-in-review.png
rename to static/img/blogposts/full-size-images/QuantStack-2021-in-review.png
diff --git a/static/img/blogposts/full-size-images/QuantStack-2022-in-review.png b/static/img/blogposts/full-size-images/QuantStack-2022-in-review.png
new file mode 100644
index 000000000..f45941095
Binary files /dev/null and b/static/img/blogposts/full-size-images/QuantStack-2022-in-review.png differ
diff --git a/static/img/blogposts/QuantStack-2023-in-review.png b/static/img/blogposts/full-size-images/QuantStack-2023-in-review.png
similarity index 100%
rename from static/img/blogposts/QuantStack-2023-in-review.png
rename to static/img/blogposts/full-size-images/QuantStack-2023-in-review.png
diff --git a/static/img/blogposts/QuantStack-Steps-Up-to-Support-Apache-Arrow-with-New-Dedicated-Team.png b/static/img/blogposts/full-size-images/QuantStack-Steps-Up-to-Support-Apache-Arrow-with-New-Dedicated-Team.png
similarity index 100%
rename from static/img/blogposts/QuantStack-Steps-Up-to-Support-Apache-Arrow-with-New-Dedicated-Team.png
rename to static/img/blogposts/full-size-images/QuantStack-Steps-Up-to-Support-Apache-Arrow-with-New-Dedicated-Team.png
diff --git a/static/img/blogposts/QuantStack-open-source-internship-program.png b/static/img/blogposts/full-size-images/QuantStack-open-source-internship-program.png
similarity index 100%
rename from static/img/blogposts/QuantStack-open-source-internship-program.png
rename to static/img/blogposts/full-size-images/QuantStack-open-source-internship-program.png
diff --git a/static/img/blogposts/ROS-@-Jupyter.png b/static/img/blogposts/full-size-images/ROS-@-Jupyter.png
similarity index 100%
rename from static/img/blogposts/ROS-@-Jupyter.png
rename to static/img/blogposts/full-size-images/ROS-@-Jupyter.png
diff --git a/static/img/blogposts/ROS-on-Conda-forge.png b/static/img/blogposts/full-size-images/ROS-on-Conda-forge.png
similarity index 100%
rename from static/img/blogposts/ROS-on-Conda-forge.png
rename to static/img/blogposts/full-size-images/ROS-on-Conda-forge.png
diff --git a/static/img/blogposts/ROS2-support-for-Zethus.png b/static/img/blogposts/full-size-images/ROS2-support-for-Zethus.png
similarity index 100%
rename from static/img/blogposts/ROS2-support-for-Zethus.png
rename to static/img/blogposts/full-size-images/ROS2-support-for-Zethus.png
diff --git a/static/img/blogposts/Real-time-Rendering-of-Water-Caustics.png b/static/img/blogposts/full-size-images/Real-time-Rendering-of-Water-Caustics.png
similarity index 100%
rename from static/img/blogposts/Real-time-Rendering-of-Water-Caustics.png
rename to static/img/blogposts/full-size-images/Real-time-Rendering-of-Water-Caustics.png
diff --git a/static/img/blogposts/full-size-images/Recent-keyboard-navigation-improvements-in-Jupyter.png b/static/img/blogposts/full-size-images/Recent-keyboard-navigation-improvements-in-Jupyter.png
new file mode 100644
index 000000000..d6113491b
Binary files /dev/null and b/static/img/blogposts/full-size-images/Recent-keyboard-navigation-improvements-in-Jupyter.png differ
diff --git a/static/img/blogposts/RetroLab-A-JupyterLab-distribution-with-a-retro-look-and-feel.png b/static/img/blogposts/full-size-images/RetroLab-A-JupyterLab-distribution-with-a-retro-look-and-feel.png
similarity index 100%
rename from static/img/blogposts/RetroLab-A-JupyterLab-distribution-with-a-retro-look-and-feel.png
rename to static/img/blogposts/full-size-images/RetroLab-A-JupyterLab-distribution-with-a-retro-look-and-feel.png
diff --git a/static/img/blogposts/full-size-images/Rhumba-a-Faster-R-Distribution.png b/static/img/blogposts/full-size-images/Rhumba-a-Faster-R-Distribution.png
new file mode 100644
index 000000000..5445a3fdc
Binary files /dev/null and b/static/img/blogposts/full-size-images/Rhumba-a-Faster-R-Distribution.png differ
diff --git a/static/img/blogposts/full-size-images/Rhumba-the-fast-R-distribution-is-available-on-Windows.png b/static/img/blogposts/full-size-images/Rhumba-the-fast-R-distribution-is-available-on-Windows.png
new file mode 100644
index 000000000..db92739d1
Binary files /dev/null and b/static/img/blogposts/full-size-images/Rhumba-the-fast-R-distribution-is-available-on-Windows.png differ
diff --git a/static/img/blogposts/Robot-Development-with-Jupyter.png b/static/img/blogposts/full-size-images/Robot-Development-with-Jupyter.png
similarity index 100%
rename from static/img/blogposts/Robot-Development-with-Jupyter.png
rename to static/img/blogposts/full-size-images/Robot-Development-with-Jupyter.png
diff --git a/static/img/blogposts/Robotic-Process-Automation-with-JupyterLab.png b/static/img/blogposts/full-size-images/Robotic-Process-Automation-with-JupyterLab.png
similarity index 100%
rename from static/img/blogposts/Robotic-Process-Automation-with-JupyterLab.png
rename to static/img/blogposts/full-size-images/Robotic-Process-Automation-with-JupyterLab.png
diff --git a/static/img/blogposts/full-size-images/STF-Arrow.png b/static/img/blogposts/full-size-images/STF-Arrow.png
new file mode 100644
index 000000000..9066347f8
Binary files /dev/null and b/static/img/blogposts/full-size-images/STF-Arrow.png differ
diff --git a/static/img/blogposts/Scientific-Computing-in-a-Polyglot-World-with-Xtensor.png b/static/img/blogposts/full-size-images/Scientific-Computing-in-a-Polyglot-World-with-Xtensor.png
similarity index 100%
rename from static/img/blogposts/Scientific-Computing-in-a-Polyglot-World-with-Xtensor.png
rename to static/img/blogposts/full-size-images/Scientific-Computing-in-a-Polyglot-World-with-Xtensor.png
diff --git a/static/img/blogposts/SlicerJupyter-a-3-D-Slicer-Kernel-for-Interactive-Publications.png b/static/img/blogposts/full-size-images/SlicerJupyter-a-3-D-Slicer-Kernel-for-Interactive-Publications.png
similarity index 100%
rename from static/img/blogposts/SlicerJupyter-a-3-D-Slicer-Kernel-for-Interactive-Publications.png
rename to static/img/blogposts/full-size-images/SlicerJupyter-a-3-D-Slicer-Kernel-for-Interactive-Publications.png
diff --git a/static/img/blogposts/full-size-images/Story-Maps.png b/static/img/blogposts/full-size-images/Story-Maps.png
new file mode 100644
index 000000000..dce2837ba
Binary files /dev/null and b/static/img/blogposts/full-size-images/Story-Maps.png differ
diff --git a/static/img/blogposts/full-size-images/Teaching-a-Billion-People.png b/static/img/blogposts/full-size-images/Teaching-a-Billion-People.png
new file mode 100644
index 000000000..5386d4279
Binary files /dev/null and b/static/img/blogposts/full-size-images/Teaching-a-Billion-People.png differ
diff --git a/static/img/blogposts/The-Julia-Challenge-in-C++.png b/static/img/blogposts/full-size-images/The-Julia-Challenge-in-C++.png
similarity index 100%
rename from static/img/blogposts/The-Julia-Challenge-in-C++.png
rename to static/img/blogposts/full-size-images/The-Julia-Challenge-in-C++.png
diff --git a/static/img/blogposts/The-Templating-System-of-Nbconvert-6.png b/static/img/blogposts/full-size-images/The-Templating-System-of-Nbconvert-6.png
similarity index 100%
rename from static/img/blogposts/The-Templating-System-of-Nbconvert-6.png
rename to static/img/blogposts/full-size-images/The-Templating-System-of-Nbconvert-6.png
diff --git a/static/img/blogposts/The-Xtensor-Vision.png b/static/img/blogposts/full-size-images/The-Xtensor-Vision.png
similarity index 100%
rename from static/img/blogposts/The-Xtensor-Vision.png
rename to static/img/blogposts/full-size-images/The-Xtensor-Vision.png
diff --git a/static/img/blogposts/The-future-of-mamba.png b/static/img/blogposts/full-size-images/The-future-of-mamba.png
similarity index 100%
rename from static/img/blogposts/The-future-of-mamba.png
rename to static/img/blogposts/full-size-images/The-future-of-mamba.png
diff --git a/static/img/blogposts/The-mamba-project-and-the-CZI-grant.png b/static/img/blogposts/full-size-images/The-mamba-project-and-the-CZI-grant.png
similarity index 100%
rename from static/img/blogposts/The-mamba-project-and-the-CZI-grant.png
rename to static/img/blogposts/full-size-images/The-mamba-project-and-the-CZI-grant.png
diff --git a/static/img/blogposts/Toward-a-faster-and-thinner-xsimd.png b/static/img/blogposts/full-size-images/Toward-a-faster-and-thinner-xsimd.png
similarity index 100%
rename from static/img/blogposts/Toward-a-faster-and-thinner-xsimd.png
rename to static/img/blogposts/full-size-images/Toward-a-faster-and-thinner-xsimd.png
diff --git a/static/img/blogposts/Towards-a-more-secure-conda-ecosystem.png b/static/img/blogposts/full-size-images/Towards-a-more-secure-conda-ecosystem.png
similarity index 100%
rename from static/img/blogposts/Towards-a-more-secure-conda-ecosystem.png
rename to static/img/blogposts/full-size-images/Towards-a-more-secure-conda-ecosystem.png
diff --git a/static/img/blogposts/Upgrading-nbgrader.png b/static/img/blogposts/full-size-images/Upgrading-nbgrader.png
similarity index 100%
rename from static/img/blogposts/Upgrading-nbgrader.png
rename to static/img/blogposts/full-size-images/Upgrading-nbgrader.png
diff --git a/static/img/blogposts/full-size-images/Video-Streaming-in-the-Jupyter-Notebook.png b/static/img/blogposts/full-size-images/Video-Streaming-in-the-Jupyter-Notebook.png
new file mode 100644
index 000000000..f3baa6547
Binary files /dev/null and b/static/img/blogposts/full-size-images/Video-Streaming-in-the-Jupyter-Notebook.png differ
diff --git a/static/img/blogposts/Visual-programming-in-JupyterLab-with-Blockly.png b/static/img/blogposts/full-size-images/Visual-programming-in-JupyterLab-with-Blockly.png
similarity index 100%
rename from static/img/blogposts/Visual-programming-in-JupyterLab-with-Blockly.png
rename to static/img/blogposts/full-size-images/Visual-programming-in-JupyterLab-with-Blockly.png
diff --git a/static/img/blogposts/Voila-0-5-Homecoming.png b/static/img/blogposts/full-size-images/Voila-0-5-Homecoming.png
similarity index 100%
rename from static/img/blogposts/Voila-0-5-Homecoming.png
rename to static/img/blogposts/full-size-images/Voila-0-5-Homecoming.png
diff --git a/static/img/blogposts/Xeus-2-0.png b/static/img/blogposts/full-size-images/Xeus-2-0.png
similarity index 100%
rename from static/img/blogposts/Xeus-2-0.png
rename to static/img/blogposts/full-size-images/Xeus-2-0.png
diff --git a/static/img/blogposts/Xeus-Lite.png b/static/img/blogposts/full-size-images/Xeus-Lite.png
similarity index 100%
rename from static/img/blogposts/Xeus-Lite.png
rename to static/img/blogposts/full-size-images/Xeus-Lite.png
diff --git a/static/img/blogposts/full-size-images/Xeus-R-Lite.png b/static/img/blogposts/full-size-images/Xeus-R-Lite.png
new file mode 100644
index 000000000..16c0ebca9
Binary files /dev/null and b/static/img/blogposts/full-size-images/Xeus-R-Lite.png differ
diff --git a/static/img/blogposts/Xframe-Towards-a-C++-Dataframe.png b/static/img/blogposts/full-size-images/Xframe-Towards-a-C++-Dataframe.png
similarity index 100%
rename from static/img/blogposts/Xframe-Towards-a-C++-Dataframe.png
rename to static/img/blogposts/full-size-images/Xframe-Towards-a-C++-Dataframe.png
diff --git a/static/img/blogposts/Xtensor-C++-and-the-Julia-Challenge.png b/static/img/blogposts/full-size-images/Xtensor-C++-and-the-Julia-Challenge.png
similarity index 100%
rename from static/img/blogposts/Xtensor-C++-and-the-Julia-Challenge.png
rename to static/img/blogposts/full-size-images/Xtensor-C++-and-the-Julia-Challenge.png
diff --git a/static/img/blogposts/Xtensor-Zarr.png b/static/img/blogposts/full-size-images/Xtensor-Zarr.png
similarity index 100%
rename from static/img/blogposts/Xtensor-Zarr.png
rename to static/img/blogposts/full-size-images/Xtensor-Zarr.png
diff --git a/static/img/blogposts/nbterm-Jupyter-Notebooks-in-the-terminal.png b/static/img/blogposts/full-size-images/nbterm-Jupyter-Notebooks-in-the-terminal.png
similarity index 100%
rename from static/img/blogposts/nbterm-Jupyter-Notebooks-in-the-terminal.png
rename to static/img/blogposts/full-size-images/nbterm-Jupyter-Notebooks-in-the-terminal.png
diff --git a/static/img/blogposts/full-size-images/sparrow.png b/static/img/blogposts/full-size-images/sparrow.png
new file mode 100644
index 000000000..c2c7b95ed
Binary files /dev/null and b/static/img/blogposts/full-size-images/sparrow.png differ
diff --git a/static/img/blogposts/zarray-a-dynamic-expression-system-based-on-xtensor.png b/static/img/blogposts/full-size-images/zarray-a-dynamic-expression-system-based-on-xtensor.png
similarity index 100%
rename from static/img/blogposts/zarray-a-dynamic-expression-system-based-on-xtensor.png
rename to static/img/blogposts/full-size-images/zarray-a-dynamic-expression-system-based-on-xtensor.png
diff --git a/static/img/blogposts/A-Diagram-Editor-for-JupyterLab.gif b/static/img/blogposts/gifs/A-Diagram-Editor-for-JupyterLab.gif
similarity index 100%
rename from static/img/blogposts/A-Diagram-Editor-for-JupyterLab.gif
rename to static/img/blogposts/gifs/A-Diagram-Editor-for-JupyterLab.gif
diff --git a/static/img/blogposts/A-Visual-Debuger-for-Jupyter.gif b/static/img/blogposts/gifs/A-Visual-Debuger-for-Jupyter.gif
similarity index 100%
rename from static/img/blogposts/A-Visual-Debuger-for-Jupyter.gif
rename to static/img/blogposts/gifs/A-Visual-Debuger-for-Jupyter.gif
diff --git a/static/img/blogposts/Abracadabra-Bringing-the-Magics-to-Xeus-Python.gif b/static/img/blogposts/gifs/Abracadabra-Bringing-the-Magics-to-Xeus-Python.gif
similarity index 100%
rename from static/img/blogposts/Abracadabra-Bringing-the-Magics-to-Xeus-Python.gif
rename to static/img/blogposts/gifs/Abracadabra-Bringing-the-Magics-to-Xeus-Python.gif
diff --git a/static/img/blogposts/Authoring-Custom-Jupyter-Widgets.gif b/static/img/blogposts/gifs/Authoring-Custom-Jupyter-Widgets.gif
similarity index 100%
rename from static/img/blogposts/Authoring-Custom-Jupyter-Widgets.gif
rename to static/img/blogposts/gifs/Authoring-Custom-Jupyter-Widgets.gif
diff --git a/static/img/blogposts/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.gif b/static/img/blogposts/gifs/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.gif
similarity index 100%
rename from static/img/blogposts/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.gif
rename to static/img/blogposts/gifs/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.gif
diff --git a/static/img/blogposts/Dashboarding-with-JupyterLab-3-0.gif b/static/img/blogposts/gifs/Dashboarding-with-JupyterLab-3-0.gif
similarity index 100%
rename from static/img/blogposts/Dashboarding-with-JupyterLab-3-0.gif
rename to static/img/blogposts/gifs/Dashboarding-with-JupyterLab-3-0.gif
diff --git a/static/img/blogposts/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.gif b/static/img/blogposts/gifs/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.gif
similarity index 100%
rename from static/img/blogposts/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.gif
rename to static/img/blogposts/gifs/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.gif
diff --git a/static/img/blogposts/Enabling-the-JupyterLab-Debugger-with-ipykernel.gif b/static/img/blogposts/gifs/Enabling-the-JupyterLab-Debugger-with-ipykernel.gif
similarity index 100%
rename from static/img/blogposts/Enabling-the-JupyterLab-Debugger-with-ipykernel.gif
rename to static/img/blogposts/gifs/Enabling-the-JupyterLab-Debugger-with-ipykernel.gif
diff --git a/static/img/blogposts/Genomic-Data-representation-in-Jupyter.gif b/static/img/blogposts/gifs/Genomic-Data-representation-in-Jupyter.gif
similarity index 100%
rename from static/img/blogposts/Genomic-Data-representation-in-Jupyter.gif
rename to static/img/blogposts/gifs/Genomic-Data-representation-in-Jupyter.gif
diff --git a/static/img/blogposts/Interactive-GIS-in-Jupyter-with-IPyleaflet.gif b/static/img/blogposts/gifs/Interactive-GIS-in-Jupyter-with-IPyleaflet.gif
similarity index 100%
rename from static/img/blogposts/Interactive-GIS-in-Jupyter-with-IPyleaflet.gif
rename to static/img/blogposts/gifs/Interactive-GIS-in-Jupyter-with-IPyleaflet.gif
diff --git a/static/img/blogposts/gifs/Jupyterlite-Terminal.gif b/static/img/blogposts/gifs/Jupyterlite-Terminal.gif
new file mode 100644
index 000000000..784b6ba4f
Binary files /dev/null and b/static/img/blogposts/gifs/Jupyterlite-Terminal.gif differ
diff --git a/static/img/blogposts/gifs/Rhumba-a-Faster-R-Distribution.gif b/static/img/blogposts/gifs/Rhumba-a-Faster-R-Distribution.gif
new file mode 100644
index 000000000..c6b1f47eb
Binary files /dev/null and b/static/img/blogposts/gifs/Rhumba-a-Faster-R-Distribution.gif differ
diff --git a/static/img/blogposts/gifs/Rhumba-the-fast-R-distribution-is-available-on-Windows.gif b/static/img/blogposts/gifs/Rhumba-the-fast-R-distribution-is-available-on-Windows.gif
new file mode 100644
index 000000000..63533601c
Binary files /dev/null and b/static/img/blogposts/gifs/Rhumba-the-fast-R-distribution-is-available-on-Windows.gif differ
diff --git a/static/img/blogposts/Video-Streaming-in-the-Jupyter-Notebook.gif b/static/img/blogposts/gifs/Video-Streaming-in-the-Jupyter-Notebook.gif
similarity index 100%
rename from static/img/blogposts/Video-Streaming-in-the-Jupyter-Notebook.gif
rename to static/img/blogposts/gifs/Video-Streaming-in-the-Jupyter-Notebook.gif
diff --git a/static/img/blogposts/Bye-bye-Boost-SIMD-Welcome-XSimd.svg b/static/img/blogposts/svg/Bye-bye-Boost-SIMD-Welcome-XSimd.svg
similarity index 100%
rename from static/img/blogposts/Bye-bye-Boost-SIMD-Welcome-XSimd.svg
rename to static/img/blogposts/svg/Bye-bye-Boost-SIMD-Welcome-XSimd.svg
diff --git a/static/img/blogposts/Designing-Language-Bindings-with-Xtensor.svg b/static/img/blogposts/svg/Designing-Language-Bindings-with-Xtensor.svg
similarity index 100%
rename from static/img/blogposts/Designing-Language-Bindings-with-Xtensor.svg
rename to static/img/blogposts/svg/Designing-Language-Bindings-with-Xtensor.svg
diff --git a/static/img/blogposts/Open-Software-Packaging-for-Science.svg b/static/img/blogposts/svg/Open-Software-Packaging-for-Science.svg
similarity index 100%
rename from static/img/blogposts/Open-Software-Packaging-for-Science.svg
rename to static/img/blogposts/svg/Open-Software-Packaging-for-Science.svg
diff --git a/static/img/group/QuantStack-2000-58.png b/static/img/group/QuantStack-2000-58.png
index 84ed8c1b1..016990b73 100644
Binary files a/static/img/group/QuantStack-2000-58.png and b/static/img/group/QuantStack-2000-58.png differ
diff --git a/static/img/icons/AboutUs.svg b/static/img/icons/AboutUs.svg
deleted file mode 100644
index c81741b60..000000000
--- a/static/img/icons/AboutUs.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/static/img/icons/ArrowLeft.svg b/static/img/icons/ArrowLeft.svg
deleted file mode 100644
index c5fdafb58..000000000
--- a/static/img/icons/ArrowLeft.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/static/img/icons/Blog.svg b/static/img/icons/Blog.svg
deleted file mode 100644
index 41c23a2e0..000000000
--- a/static/img/icons/Blog.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/static/img/icons/BlueCaret.svg b/static/img/icons/BlueCaret.svg
new file mode 100644
index 000000000..cccc9286b
--- /dev/null
+++ b/static/img/icons/BlueCaret.svg
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/static/img/icons/Careers.svg b/static/img/icons/Careers.svg
deleted file mode 100644
index 2ec079ca6..000000000
--- a/static/img/icons/Careers.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/static/img/icons/ContactUs.svg b/static/img/icons/ContactUs.svg
deleted file mode 100644
index b209458fe..000000000
--- a/static/img/icons/ContactUs.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/static/img/icons/Dollar.svg b/static/img/icons/Dollar.svg
new file mode 100644
index 000000000..08d941eef
--- /dev/null
+++ b/static/img/icons/Dollar.svg
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
diff --git a/static/img/icons/Funders.svg b/static/img/icons/Funders.svg
new file mode 100644
index 000000000..26b82f256
--- /dev/null
+++ b/static/img/icons/Funders.svg
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
diff --git a/static/img/icons/Home.svg b/static/img/icons/Home.svg
deleted file mode 100644
index 336989fb0..000000000
--- a/static/img/icons/Home.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/static/img/icons/Projects.svg b/static/img/icons/Projects.svg
deleted file mode 100644
index 671b6aa56..000000000
--- a/static/img/icons/Projects.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/static/img/icons/RSSOrange.svg b/static/img/icons/RSSOrange.svg
new file mode 100644
index 000000000..8dfcb3d97
--- /dev/null
+++ b/static/img/icons/RSSOrange.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/img/icons/Services.svg b/static/img/icons/Services.svg
deleted file mode 100644
index 80a753822..000000000
--- a/static/img/icons/Services.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/static/img/interviews/Matthias_WTJ.png b/static/img/interviews/Matthias_WTJ.png
new file mode 100644
index 000000000..cd6c54482
Binary files /dev/null and b/static/img/interviews/Matthias_WTJ.png differ
diff --git a/static/img/interviews/Matthias_WTJ.webp b/static/img/interviews/Matthias_WTJ.webp
new file mode 100644
index 000000000..e81e22cb8
Binary files /dev/null and b/static/img/interviews/Matthias_WTJ.webp differ
diff --git a/static/img/interviews/Meriem_WTJ.png b/static/img/interviews/Meriem_WTJ.png
new file mode 100644
index 000000000..2c1681760
Binary files /dev/null and b/static/img/interviews/Meriem_WTJ.png differ
diff --git a/static/img/interviews/Meriem_WTJ.webp b/static/img/interviews/Meriem_WTJ.webp
new file mode 100644
index 000000000..f70eec164
Binary files /dev/null and b/static/img/interviews/Meriem_WTJ.webp differ
diff --git a/static/img/interviews/Sandrine_WTJ.png b/static/img/interviews/Sandrine_WTJ.png
new file mode 100644
index 000000000..63b4a4fee
Binary files /dev/null and b/static/img/interviews/Sandrine_WTJ.png differ
diff --git a/static/img/interviews/Sandrine_WTJ.webp b/static/img/interviews/Sandrine_WTJ.webp
new file mode 100644
index 000000000..81d40fc8d
Binary files /dev/null and b/static/img/interviews/Sandrine_WTJ.webp differ
diff --git a/static/img/interviews/Sylvain_WTJ.png b/static/img/interviews/Sylvain_WTJ.png
index e22e05b6f..274d91d1d 100644
Binary files a/static/img/interviews/Sylvain_WTJ.png and b/static/img/interviews/Sylvain_WTJ.png differ
diff --git a/static/img/interviews/Sylvain_WTJ.webp b/static/img/interviews/Sylvain_WTJ.webp
index 2922cb9da..79c521a50 100644
Binary files a/static/img/interviews/Sylvain_WTJ.webp and b/static/img/interviews/Sylvain_WTJ.webp differ
diff --git a/static/img/logos/CEA.png b/static/img/logos/CEA.png
index 753aee58c..8c97835d0 100644
Binary files a/static/img/logos/CEA.png and b/static/img/logos/CEA.png differ
diff --git a/static/img/logos/CFM.png b/static/img/logos/CFM.png
index bd58cbaa6..ff8939b20 100644
Binary files a/static/img/logos/CFM.png and b/static/img/logos/CFM.png differ
diff --git a/static/img/logos/CNES.png b/static/img/logos/CNES.png
new file mode 100644
index 000000000..275893918
Binary files /dev/null and b/static/img/logos/CNES.png differ
diff --git a/static/img/logos/ESA.png b/static/img/logos/ESA.png
new file mode 100644
index 000000000..d87774ceb
Binary files /dev/null and b/static/img/logos/ESA.png differ
diff --git a/static/img/logos/GainTheory.png b/static/img/logos/GainTheory.png
index 391783d0f..1b22bd7e9 100644
Binary files a/static/img/logos/GainTheory.png and b/static/img/logos/GainTheory.png differ
diff --git a/static/img/logos/GatesFoundation.png b/static/img/logos/GatesFoundation.png
new file mode 100644
index 000000000..0b2dff418
Binary files /dev/null and b/static/img/logos/GatesFoundation.png differ
diff --git a/static/img/logos/LF.png b/static/img/logos/LF.png
new file mode 100755
index 000000000..240a278df
Binary files /dev/null and b/static/img/logos/LF.png differ
diff --git a/static/img/logos/SG.png b/static/img/logos/SG.png
index e1e5ef7b4..62e25987a 100644
Binary files a/static/img/logos/SG.png and b/static/img/logos/SG.png differ
diff --git a/static/img/logos/SovereignTechAgency.png b/static/img/logos/SovereignTechAgency.png
new file mode 100644
index 000000000..ba3f1abe5
Binary files /dev/null and b/static/img/logos/SovereignTechAgency.png differ
diff --git a/static/img/logos/Stripe.png b/static/img/logos/Stripe.png
new file mode 100644
index 000000000..dded51aac
Binary files /dev/null and b/static/img/logos/Stripe.png differ
diff --git a/static/img/logos/Wikimedia.png b/static/img/logos/Wikimedia.png
new file mode 100644
index 000000000..25cefdfe3
Binary files /dev/null and b/static/img/logos/Wikimedia.png differ
diff --git a/static/img/logos/logos-png/Cresset.png b/static/img/logos/logos-png/Cresset.png
deleted file mode 100644
index dd967fe79..000000000
Binary files a/static/img/logos/logos-png/Cresset.png and /dev/null differ
diff --git a/static/img/logos/logos-png/ERDC.png b/static/img/logos/logos-png/ERDC.png
deleted file mode 100644
index 1ee9acefc..000000000
Binary files a/static/img/logos/logos-png/ERDC.png and /dev/null differ
diff --git a/static/img/logos/logos-png/Enthought.png b/static/img/logos/logos-png/Enthought.png
deleted file mode 100644
index eb8264550..000000000
Binary files a/static/img/logos/logos-png/Enthought.png and /dev/null differ
diff --git a/static/img/logos/logos-png/GainTheory.png b/static/img/logos/logos-png/GainTheory.png
deleted file mode 100644
index b1b08e1de..000000000
Binary files a/static/img/logos/logos-png/GainTheory.png and /dev/null differ
diff --git a/static/img/logos/logos-png/GainTheory2.png b/static/img/logos/logos-png/GainTheory2.png
deleted file mode 100644
index 101eb0bbb..000000000
Binary files a/static/img/logos/logos-png/GainTheory2.png and /dev/null differ
diff --git a/static/img/logos/logos-png/JRC.png b/static/img/logos/logos-png/JRC.png
deleted file mode 100644
index b5dab2d2d..000000000
Binary files a/static/img/logos/logos-png/JRC.png and /dev/null differ
diff --git a/static/img/logos/logos-png/MaxFordham.png b/static/img/logos/logos-png/MaxFordham.png
deleted file mode 100644
index af88560a7..000000000
Binary files a/static/img/logos/logos-png/MaxFordham.png and /dev/null differ
diff --git a/static/img/logos/logos-png/Natixis.png b/static/img/logos/logos-png/Natixis.png
deleted file mode 100644
index 696ea1e4d..000000000
Binary files a/static/img/logos/logos-png/Natixis.png and /dev/null differ
diff --git a/static/img/logos/logos-png/Rapyuta.png b/static/img/logos/logos-png/Rapyuta.png
deleted file mode 100644
index 87d5d1d3f..000000000
Binary files a/static/img/logos/logos-png/Rapyuta.png and /dev/null differ
diff --git a/static/img/logos/logos-png/Rapyuta2.png b/static/img/logos/logos-png/Rapyuta2.png
deleted file mode 100644
index c06b91e9c..000000000
Binary files a/static/img/logos/logos-png/Rapyuta2.png and /dev/null differ
diff --git a/static/img/logos/logos-png/SG.png b/static/img/logos/logos-png/SG.png
deleted file mode 100644
index fc910d62d..000000000
Binary files a/static/img/logos/logos-png/SG.png and /dev/null differ
diff --git a/static/img/logos/logos-png/UnitedRobotics.png b/static/img/logos/logos-png/UnitedRobotics.png
deleted file mode 100644
index b0432766e..000000000
Binary files a/static/img/logos/logos-png/UnitedRobotics.png and /dev/null differ
diff --git a/static/img/logos/logos-svg/CNES.svg b/static/img/logos/logos-svg/CNES.svg
new file mode 100644
index 000000000..e1a9c07ba
--- /dev/null
+++ b/static/img/logos/logos-svg/CNES.svg
@@ -0,0 +1,243 @@
+
+image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/img/notebooklink/rocket.svg b/static/img/notebooklink/rocket.svg
new file mode 100644
index 000000000..d3dbe619e
--- /dev/null
+++ b/static/img/notebooklink/rocket.svg
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/img/notebooklink/rocket.svg.2026_05_15_09_30_13.0.svg b/static/img/notebooklink/rocket.svg.2026_05_15_09_30_13.0.svg
new file mode 100644
index 000000000..6ddabbe0c
--- /dev/null
+++ b/static/img/notebooklink/rocket.svg.2026_05_15_09_30_13.0.svg
@@ -0,0 +1,385 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/img/projects/special_projects.png b/static/img/projects/special_projects.png
new file mode 100644
index 000000000..caf2c3eff
Binary files /dev/null and b/static/img/projects/special_projects.png differ
diff --git a/static/img/projects/special_projects.svg b/static/img/projects/special_projects.svg
new file mode 100644
index 000000000..eba2ceed7
--- /dev/null
+++ b/static/img/projects/special_projects.svg
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/img/quantstack/astronaut-footer.svg b/static/img/quantstack/astronaut-footer.svg
deleted file mode 100644
index 8577345db..000000000
--- a/static/img/quantstack/astronaut-footer.svg
+++ /dev/null
@@ -1,170 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/static/img/quantstack/astronaut-hero.svg b/static/img/quantstack/astronaut-hero.svg
deleted file mode 100644
index 0870a18d3..000000000
--- a/static/img/quantstack/astronaut-hero.svg
+++ /dev/null
@@ -1,132 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/static/img/quantstack/astronaut.svg b/static/img/quantstack/astronaut.svg
index 5bef8245a..01b0ed587 100644
--- a/static/img/quantstack/astronaut.svg
+++ b/static/img/quantstack/astronaut.svg
@@ -1,114 +1,122 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/static/img/quantstack/favicon.ico b/static/img/quantstack/favicon.ico
new file mode 100644
index 000000000..00545fd28
Binary files /dev/null and b/static/img/quantstack/favicon.ico differ
diff --git a/static/img/quantstack/logo-quantstack.svg b/static/img/quantstack/logo-quantstack.svg
deleted file mode 100644
index a9bb46b49..000000000
--- a/static/img/quantstack/logo-quantstack.svg
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
-
-
-
diff --git a/static/img/quantstack/logo-website-smaller.svg b/static/img/quantstack/logo-website-smaller.svg
new file mode 100644
index 000000000..beb87ccc9
--- /dev/null
+++ b/static/img/quantstack/logo-website-smaller.svg
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/img/quantstack/logo-website-white-text.svg b/static/img/quantstack/logo-website-white-text.svg
new file mode 100644
index 000000000..47ccc687a
--- /dev/null
+++ b/static/img/quantstack/logo-website-white-text.svg
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/img/quantstack/logo-website.svg b/static/img/quantstack/logo-website.svg
deleted file mode 100644
index 5993e2c20..000000000
--- a/static/img/quantstack/logo-website.svg
+++ /dev/null
@@ -1,127 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/static/img/socialmedias/Bluesky.svg b/static/img/socialmedias/Bluesky.svg
new file mode 100644
index 000000000..53f7fe9c1
--- /dev/null
+++ b/static/img/socialmedias/Bluesky.svg
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
diff --git a/static/img/socialmedias/GH.svg b/static/img/socialmedias/GH.svg
index 422fe2508..a8758e8af 100644
--- a/static/img/socialmedias/GH.svg
+++ b/static/img/socialmedias/GH.svg
@@ -1,6 +1,32 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/static/img/socialmedias/LinkedIn.svg b/static/img/socialmedias/LinkedIn.svg
index e0fad5d9b..4980b0042 100644
--- a/static/img/socialmedias/LinkedIn.svg
+++ b/static/img/socialmedias/LinkedIn.svg
@@ -1,6 +1,32 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/static/img/socialmedias/Mastodon.svg b/static/img/socialmedias/Mastodon.svg
new file mode 100644
index 000000000..2aaf70b87
--- /dev/null
+++ b/static/img/socialmedias/Mastodon.svg
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/img/socialmedias/RSS.svg b/static/img/socialmedias/RSS.svg
new file mode 100644
index 000000000..42580b2c9
--- /dev/null
+++ b/static/img/socialmedias/RSS.svg
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/img/socialmedias/X.svg b/static/img/socialmedias/X.svg
deleted file mode 100644
index c6e07fbbc..000000000
--- a/static/img/socialmedias/X.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/static/rss.xml b/static/rss.xml
new file mode 100644
index 000000000..3d431218c
--- /dev/null
+++ b/static/rss.xml
@@ -0,0 +1,191 @@
+
+
+
+
+ https://quantstack.net
+ RSS for Node
+ Fri, 10 Jul 2026 11:54:34 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupyterlite-0-8-is-released-0c89c4200f79
+ https://blog.jupyter.org/jupyterlite-0-8-is-released-0c89c4200f79
+
+ Fri, 10 Jul 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/congratulations-distinguished-contributors-1998f468b29e
+ https://blog.jupyter.org/congratulations-distinguished-contributors-1998f468b29e
+
+ Wed, 24 Jun 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@AntoineProuvost/improving-simd-in-apache-arrow-80-faster-parquet-column-reads-on-arm-42150ac4ec21
+ https://medium.com/@AntoineProuvost/improving-simd-in-apache-arrow-80-faster-parquet-column-reads-on-arm-42150ac4ec21
+
+ Thu, 11 Jun 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://notebook.link/@DerThorsten/async-xeus-python
+ https://notebook.link/@DerThorsten/async-xeus-python
+
+ Wed, 10 Jun 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@julien.jerphanion/sharded-repodata-support-in-mamba-ae6147d1d608
+ https://medium.com/@julien.jerphanion/sharded-repodata-support-in-mamba-ae6147d1d608
+
+ Wed, 29 Apr 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@QuantStack/introducing-sparrow-ipc-modern-c-20-arrow-ipc-e1690ae82b81
+ https://medium.com/@QuantStack/introducing-sparrow-ipc-modern-c-20-arrow-ipc-e1690ae82b81
+
+ Sat, 04 Apr 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://prefix.dev/blog/serverless-scientific-computing-how-notebook-link-scales-without-backends
+ https://prefix.dev/blog/serverless-scientific-computing-how-notebook-link-scales-without-backends
+
+ Fri, 27 Mar 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@AntoineProuvost/faster-reads-for-apache-parquet-improving-integer-unpacking-f6e21ce49a85
+ https://medium.com/@AntoineProuvost/faster-reads-for-apache-parquet-improving-integer-unpacking-f6e21ce49a85
+
+ Mon, 16 Mar 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/expanding-geospatial-workflows-in-jupytergis-stac-browsing-and-story-maps-7fb98eece82e
+ https://blog.jupyter.org/expanding-geospatial-workflows-in-jupytergis-stac-browsing-and-story-maps-7fb98eece82e
+
+ Thu, 19 Feb 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupyterlite-officially-joins-project-jupyter-77df24c8db80
+ https://blog.jupyter.org/jupyterlite-officially-joins-project-jupyter-77df24c8db80
+
+ Thu, 12 Feb 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/instantly-view-parquet-files-in-jupyterlab-with-arbalister-4799c28bbce7
+ https://blog.jupyter.org/instantly-view-parquet-files-in-jupyterlab-with-arbalister-4799c28bbce7
+
+ Thu, 29 Jan 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@QuantStack/introducing-notebook-link-the-future-of-notebook-sharing-5de900a97b4a
+ https://medium.com/@QuantStack/introducing-notebook-link-the-future-of-notebook-sharing-5de900a97b4a
+
+ Thu, 22 Jan 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupyterlite-0-7-is-released-67db4d1609ad
+ https://blog.jupyter.org/jupyterlite-0-7-is-released-67db4d1609ad
+
+ Thu, 04 Dec 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://thenewstack.io/teaching-a-billion-people-to-code-how-jupyterlite-is-scaling-the-impossible/
+ https://thenewstack.io/teaching-a-billion-people-to-code-how-jupyterlite-is-scaling-the-impossible/
+
+ Mon, 01 Dec 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupyterlab-4-5-and-notebook-7-5-are-available-1bcd1fa19a47
+ https://blog.jupyter.org/jupyterlab-4-5-and-notebook-7-5-are-available-1bcd1fa19a47
+
+ Mon, 24 Nov 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/gnu-octave-meets-jupyterlite-compute-anywhere-anytime-8b033afbbcdc
+ https://blog.jupyter.org/gnu-octave-meets-jupyterlite-compute-anywhere-anytime-8b033afbbcdc
+
+ Thu, 16 Oct 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://eo4society.esa.int/2025/10/16/jupytergis-breaks-through-to-the-next-level/
+ https://eo4society.esa.int/2025/10/16/jupytergis-breaks-through-to-the-next-level/
+
+ Thu, 16 Oct 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@QuantStack/sovereign-tech-agency-invests-in-apache-arrows-future-with-quantstack-d2f84c21c2cc
+ https://medium.com/@QuantStack/sovereign-tech-agency-invests-in-apache-arrows-future-with-quantstack-d2f84c21c2cc
+
+ Tue, 07 Oct 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://www.open-source-ward.com/from-linux-parties-to-global-impact-an-interview-with-sylvain-corlay-founder-of-quantstack/
+ https://www.open-source-ward.com/from-linux-parties-to-global-impact-an-interview-with-sylvain-corlay-founder-of-quantstack/
+
+ Thu, 18 Sep 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@QuantStack/a-year-in-review-quantstacks-contributions-to-apache-arrow-7eba38acbcf2
+ https://medium.com/@QuantStack/a-year-in-review-quantstacks-contributions-to-apache-arrow-7eba38acbcf2
+
+ Tue, 02 Sep 2025 00:00:00 GMT
+
+
+
+
\ No newline at end of file
diff --git a/static/rss_all.xml b/static/rss_all.xml
new file mode 100644
index 000000000..efc60a5b1
--- /dev/null
+++ b/static/rss_all.xml
@@ -0,0 +1,1415 @@
+
+
+
+
+ https://quantstack.net
+ RSS for Node
+ Fri, 10 Jul 2026 11:54:34 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupyterlite-0-8-is-released-0c89c4200f79
+ https://blog.jupyter.org/jupyterlite-0-8-is-released-0c89c4200f79
+
+ Fri, 10 Jul 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/congratulations-distinguished-contributors-1998f468b29e
+ https://blog.jupyter.org/congratulations-distinguished-contributors-1998f468b29e
+
+ Wed, 24 Jun 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@AntoineProuvost/improving-simd-in-apache-arrow-80-faster-parquet-column-reads-on-arm-42150ac4ec21
+ https://medium.com/@AntoineProuvost/improving-simd-in-apache-arrow-80-faster-parquet-column-reads-on-arm-42150ac4ec21
+
+ Thu, 11 Jun 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://notebook.link/@DerThorsten/async-xeus-python
+ https://notebook.link/@DerThorsten/async-xeus-python
+
+ Wed, 10 Jun 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@julien.jerphanion/sharded-repodata-support-in-mamba-ae6147d1d608
+ https://medium.com/@julien.jerphanion/sharded-repodata-support-in-mamba-ae6147d1d608
+
+ Wed, 29 Apr 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@QuantStack/introducing-sparrow-ipc-modern-c-20-arrow-ipc-e1690ae82b81
+ https://medium.com/@QuantStack/introducing-sparrow-ipc-modern-c-20-arrow-ipc-e1690ae82b81
+
+ Sat, 04 Apr 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://prefix.dev/blog/serverless-scientific-computing-how-notebook-link-scales-without-backends
+ https://prefix.dev/blog/serverless-scientific-computing-how-notebook-link-scales-without-backends
+
+ Fri, 27 Mar 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@AntoineProuvost/faster-reads-for-apache-parquet-improving-integer-unpacking-f6e21ce49a85
+ https://medium.com/@AntoineProuvost/faster-reads-for-apache-parquet-improving-integer-unpacking-f6e21ce49a85
+
+ Mon, 16 Mar 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/expanding-geospatial-workflows-in-jupytergis-stac-browsing-and-story-maps-7fb98eece82e
+ https://blog.jupyter.org/expanding-geospatial-workflows-in-jupytergis-stac-browsing-and-story-maps-7fb98eece82e
+
+ Thu, 19 Feb 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupyterlite-officially-joins-project-jupyter-77df24c8db80
+ https://blog.jupyter.org/jupyterlite-officially-joins-project-jupyter-77df24c8db80
+
+ Thu, 12 Feb 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/instantly-view-parquet-files-in-jupyterlab-with-arbalister-4799c28bbce7
+ https://blog.jupyter.org/instantly-view-parquet-files-in-jupyterlab-with-arbalister-4799c28bbce7
+
+ Thu, 29 Jan 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@QuantStack/introducing-notebook-link-the-future-of-notebook-sharing-5de900a97b4a
+ https://medium.com/@QuantStack/introducing-notebook-link-the-future-of-notebook-sharing-5de900a97b4a
+
+ Thu, 22 Jan 2026 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupyterlite-0-7-is-released-67db4d1609ad
+ https://blog.jupyter.org/jupyterlite-0-7-is-released-67db4d1609ad
+
+ Thu, 04 Dec 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://thenewstack.io/teaching-a-billion-people-to-code-how-jupyterlite-is-scaling-the-impossible/
+ https://thenewstack.io/teaching-a-billion-people-to-code-how-jupyterlite-is-scaling-the-impossible/
+
+ Mon, 01 Dec 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupyterlab-4-5-and-notebook-7-5-are-available-1bcd1fa19a47
+ https://blog.jupyter.org/jupyterlab-4-5-and-notebook-7-5-are-available-1bcd1fa19a47
+
+ Mon, 24 Nov 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/gnu-octave-meets-jupyterlite-compute-anywhere-anytime-8b033afbbcdc
+ https://blog.jupyter.org/gnu-octave-meets-jupyterlite-compute-anywhere-anytime-8b033afbbcdc
+
+ Thu, 16 Oct 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://eo4society.esa.int/2025/10/16/jupytergis-breaks-through-to-the-next-level/
+ https://eo4society.esa.int/2025/10/16/jupytergis-breaks-through-to-the-next-level/
+
+ Thu, 16 Oct 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@QuantStack/sovereign-tech-agency-invests-in-apache-arrows-future-with-quantstack-d2f84c21c2cc
+ https://medium.com/@QuantStack/sovereign-tech-agency-invests-in-apache-arrows-future-with-quantstack-d2f84c21c2cc
+
+ Tue, 07 Oct 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://www.open-source-ward.com/from-linux-parties-to-global-impact-an-interview-with-sylvain-corlay-founder-of-quantstack/
+ https://www.open-source-ward.com/from-linux-parties-to-global-impact-an-interview-with-sylvain-corlay-founder-of-quantstack/
+
+ Thu, 18 Sep 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@QuantStack/a-year-in-review-quantstacks-contributions-to-apache-arrow-7eba38acbcf2
+ https://medium.com/@QuantStack/a-year-in-review-quantstacks-contributions-to-apache-arrow-7eba38acbcf2
+
+ Tue, 02 Sep 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://david-brochart.medium.com/create-your-own-layers-in-jupytergis-cbb995a89b16
+ https://david-brochart.medium.com/create-your-own-layers-in-jupytergis-cbb995a89b16
+
+ Wed, 25 Jun 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/c-in-jupyter-interpreting-c-in-the-web-c9d93542f20b
+ https://blog.jupyter.org/c-in-jupyter-interpreting-c-in-the-web-c9d93542f20b
+
+ Thu, 19 Jun 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupyterlite-0-6-0-is-released-b4bc69bfc8f4
+ https://blog.jupyter.org/jupyterlite-0-6-0-is-released-b4bc69bfc8f4
+
+ Thu, 12 Jun 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupyterlab-4-4-and-notebook-7-4-are-available-aca2782d4f3d
+ https://blog.jupyter.org/jupyterlab-4-4-and-notebook-7-4-are-available-aca2782d4f3d
+
+ Wed, 21 May 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/congratulations-distinguished-contributors-2504029fc5a9
+ https://blog.jupyter.org/congratulations-distinguished-contributors-2504029fc5a9
+
+ Thu, 15 May 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://david-brochart.medium.com/making-qt-collaborative-using-crdts-94c470703253
+ https://david-brochart.medium.com/making-qt-collaborative-using-crdts-94c470703253
+
+ Mon, 31 Mar 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/r-in-the-browser-announcing-our-webassembly-distribution-9450e9539ed5
+ https://blog.jupyter.org/r-in-the-browser-announcing-our-webassembly-distribution-9450e9539ed5
+
+ Fri, 28 Feb 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/real-time-collaboration-and-collaborative-editing-for-gis-workflows-with-jupyter-and-qgis-d25dbe2832a6
+ https://blog.jupyter.org/real-time-collaboration-and-collaborative-editing-for-gis-workflows-with-jupyter-and-qgis-d25dbe2832a6
+
+ Wed, 26 Feb 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@PyDataParis/pydata-paris-2025-50ff2bf2dc39
+ https://medium.com/@PyDataParis/pydata-paris-2025-50ff2bf2dc39
+
+ Wed, 19 Feb 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/announcing-jupytercad-3-0-d8f4b7b0a719
+ https://blog.jupyter.org/announcing-jupytercad-3-0-d8f4b7b0a719
+
+ Mon, 17 Feb 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://johan-mabille.medium.com/sparrow-1f23817f6696
+ https://johan-mabille.medium.com/sparrow-1f23817f6696
+
+ Fri, 31 Jan 2025 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupyterlite-terminal-edb3f80dc1c0
+ https://blog.jupyter.org/jupyterlite-terminal-edb3f80dc1c0
+
+ Wed, 13 Nov 2024 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/automate-your-releases-with-the-jupyter-releaser-701e7b9841e6
+ https://blog.jupyter.org/automate-your-releases-with-the-jupyter-releaser-701e7b9841e6
+
+ Mon, 28 Oct 2024 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@QuantStack/quantstack-steps-up-to-support-apache-arrow-with-new-dedicated-team-9ddc952f20e2
+ https://medium.com/@QuantStack/quantstack-steps-up-to-support-apache-arrow-with-new-dedicated-team-9ddc952f20e2
+
+ Tue, 22 Oct 2024 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/interactive-mapping-with-ipyopenlayers-2b8bc93bb6c4
+ https://blog.jupyter.org/interactive-mapping-with-ipyopenlayers-2b8bc93bb6c4
+
+ Fri, 06 Sep 2024 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/announcing-the-2023-jupyter-distinguished-contributor-award-recipients-1b2cc4ba203f
+ https://blog.jupyter.org/announcing-the-2023-jupyter-distinguished-contributor-award-recipients-1b2cc4ba203f
+
+ Wed, 04 Sep 2024 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/ipydatagrid-is-now-part-of-project-jupyter-3b3dfb877664
+ https://blog.jupyter.org/ipydatagrid-is-now-part-of-project-jupyter-3b3dfb877664
+
+ Thu, 22 Aug 2024 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@QuantStack/introducing-mamba-2-0-0e8d5c6d1d0c
+ https://medium.com/@QuantStack/introducing-mamba-2-0-0e8d5c6d1d0c
+
+ Tue, 16 Jul 2024 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@QuantStack/quantstack-open-source-internship-program-049755b6d44b
+ https://medium.com/@QuantStack/quantstack-open-source-internship-program-049755b6d44b
+
+ Tue, 09 Jul 2024 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@QuantStack/jupytercad-2-0-4b9c4e18d22a
+ https://medium.com/@QuantStack/jupytercad-2-0-4b9c4e18d22a
+
+ Fri, 05 Jul 2024 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupytergis-d63b7adf9d0c
+ https://blog.jupyter.org/jupytergis-d63b7adf9d0c
+
+ Wed, 12 Jun 2024 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@SylvainCorlay/commit-cdf57415b94b
+ https://medium.com/@SylvainCorlay/commit-cdf57415b94b
+
+ Wed, 29 May 2024 00:00:00 GMT
+
+
+ -
+
+
+ /blogs/Fanny
+ /blogs/Fanny
+
+ Thu, 16 May 2024 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@PyDataParis/announcing-pydata-paris-2024-700220accc72
+ https://medium.com/@PyDataParis/announcing-pydata-paris-2024-700220accc72
+
+ Mon, 11 Mar 2024 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/meet-xeus-r-a-future-proof-jupyter-kernel-for-r-1adc5fdd09ab
+ https://blog.jupyter.org/meet-xeus-r-a-future-proof-jupyter-kernel-for-r-1adc5fdd09ab
+
+ Mon, 22 Jan 2024 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@QuantStack/quantstack-2023-in-review-94fea0a35520
+ https://medium.com/@QuantStack/quantstack-2023-in-review-94fea0a35520
+
+ Wed, 03 Jan 2024 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/recent-keyboard-navigation-improvements-in-jupyter-4df32f97628d
+ https://blog.jupyter.org/recent-keyboard-navigation-improvements-in-jupyter-4df32f97628d
+
+ Sat, 16 Dec 2023 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/and-voici-e02367197ba2
+ https://blog.jupyter.org/and-voici-e02367197ba2
+
+ Wed, 06 Dec 2023 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/plug-your-application-into-the-jupyter-world-805e48918801
+ https://blog.jupyter.org/plug-your-application-into-the-jupyter-world-805e48918801
+
+ Mon, 23 Oct 2023 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/voil%C3%A0-0-5-0-homecoming-66f2465aa86f
+ https://blog.jupyter.org/voil%C3%A0-0-5-0-homecoming-66f2465aa86f
+
+ Mon, 25 Sep 2023 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/announcing-jupyter-notebook-7-8d6d66126dcf
+ https://blog.jupyter.org/announcing-jupyter-notebook-7-8d6d66126dcf
+
+ Wed, 26 Jul 2023 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupytercon-2023-recordings-now-live-on-youtube-17564b75a2a
+ https://blog.jupyter.org/jupytercon-2023-recordings-now-live-on-youtube-17564b75a2a
+
+ Sat, 22 Jul 2023 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/a-theme-editor-for-jupyterlab-8f08ab62894d
+ https://blog.jupyter.org/a-theme-editor-for-jupyterlab-8f08ab62894d
+
+ Mon, 19 Jun 2023 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/collaborative-cad-in-jupyterlab-8eb9e8f81f0
+ https://blog.jupyter.org/collaborative-cad-in-jupyterlab-8eb9e8f81f0
+
+ Fri, 02 Jun 2023 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/congratulations-distinguished-contributors-7a7b215b8bd0
+ https://blog.jupyter.org/congratulations-distinguished-contributors-7a7b215b8bd0
+
+ Fri, 02 Jun 2023 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/embed-interactive-itkwidgets-3d-renderings-into-jupyterlite-deployments-10eb9ea30980
+ https://blog.jupyter.org/embed-interactive-itkwidgets-3d-renderings-into-jupyterlite-deployments-10eb9ea30980
+
+ Wed, 15 Mar 2023 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/improving-the-accessibility-of-jupyter-6c695db518d3
+ https://blog.jupyter.org/improving-the-accessibility-of-jupyter-6c695db518d3
+
+ Fri, 24 Feb 2023 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/a-jupyter-kernel-for-gnu-octave-b6d29e56341f
+ https://blog.jupyter.org/a-jupyter-kernel-for-gnu-octave-b6d29e56341f
+
+ Wed, 11 Jan 2023 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@QuantStack/quantstack-2022-in-review-7d4704b1db42
+ https://medium.com/@QuantStack/quantstack-2022-in-review-7d4704b1db42
+
+ Mon, 26 Dec 2022 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@AntoineProuvost/managing-conflicts-with-mamba-6a5fa10ed6a
+ https://medium.com/@AntoineProuvost/managing-conflicts-with-mamba-6a5fa10ed6a
+
+ Tue, 29 Nov 2022 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupytercon-is-back-in-2023-90e5c25eeec9
+ https://blog.jupyter.org/jupytercon-is-back-in-2023-90e5c25eeec9
+
+ Mon, 17 Oct 2022 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/accelerating-jupyterlab-68942bb8d602
+ https://blog.jupyter.org/accelerating-jupyterlab-68942bb8d602
+
+ Thu, 15 Sep 2022 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/upgrading-nbgrader-99c56ae56c47
+ https://blog.jupyter.org/upgrading-nbgrader-99c56ae56c47
+
+ Thu, 15 Sep 2022 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/visual-programming-in-jupyterlab-with-blockly-7731ec3e113c
+ https://blog.jupyter.org/visual-programming-in-jupyterlab-with-blockly-7731ec3e113c
+
+ Fri, 29 Jul 2022 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/mamba-meets-jupyterlite-88ef49ac4dc8
+ https://blog.jupyter.org/mamba-meets-jupyterlite-88ef49ac4dc8
+
+ Thu, 14 Jul 2022 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/inspector-jupyterlab-404cce3e1df6
+ https://blog.jupyter.org/inspector-jupyterlab-404cce3e1df6
+
+ Mon, 11 Apr 2022 00:00:00 GMT
+
+
+ -
+
based renderer for Matplotlib in Pyodide]]>
+
+ https://blog.pyodide.org/posts/canvas-renderer-matplotlib-in-pyodide/
+ https://blog.pyodide.org/posts/canvas-renderer-matplotlib-in-pyodide/
+
+ Fri, 01 Apr 2022 00:00:00 GMT
+
+
+ -
+
+
+ https://wolfv.medium.com/the-future-of-mamba-fdf6d628b3df
+ https://wolfv.medium.com/the-future-of-mamba-fdf6d628b3df
+
+ Tue, 01 Mar 2022 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/congratulations-distinguished-contributors-bc349fa60d68
+ https://blog.jupyter.org/congratulations-distinguished-contributors-bc349fa60d68
+
+ Wed, 16 Mar 2022 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupyter-everywhere-f8151c2cc6e8
+ https://blog.jupyter.org/jupyter-everywhere-f8151c2cc6e8
+
+ Tue, 15 Mar 2022 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@kmathewos92/ros2-support-for-zethus-e6ecfcdb1c4c
+ https://medium.com/@kmathewos92/ros2-support-for-zethus-e6ecfcdb1c4c
+
+ Thu, 17 Feb 2022 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@QuantStack/quantstack-2021-in-review-fe5eac2e0f6d
+ https://medium.com/@QuantStack/quantstack-2021-in-review-fe5eac2e0f6d
+
+ Sat, 18 Dec 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupyter-games-cda20dc15a21
+ https://blog.jupyter.org/jupyter-games-cda20dc15a21
+
+ Tue, 14 Dec 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/need-for-speed-voil%C3%A0-edition-a9e1300ab3b2
+ https://blog.jupyter.org/need-for-speed-voil%C3%A0-edition-a9e1300ab3b2
+
+ Fri, 10 Dec 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://adelsalle.medium.com/towards-a-more-secure-conda-ecosystem-5ce65a27d7d5
+ https://adelsalle.medium.com/towards-a-more-secure-conda-ecosystem-5ce65a27d7d5
+
+ Tue, 16 Nov 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://johan-mabille.medium.com/toward-a-faster-and-thinner-xsimd-9e4eef41bc17
+ https://johan-mabille.medium.com/toward-a-faster-and-thinner-xsimd-9e4eef41bc17
+
+ Fri, 29 Oct 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/xeus-lite-379e96bb199d
+ https://blog.jupyter.org/xeus-lite-379e96bb199d
+
+ Mon, 25 Oct 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://wolfv.medium.com/the-mamba-project-and-the-czi-grant-ec88fb27c25
+ https://wolfv.medium.com/the-mamba-project-and-the-czi-grant-ec88fb27c25
+
+ Tue, 19 Oct 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/looking-at-notebooks-from-a-new-perspective-bfd06797f188
+ https://blog.jupyter.org/looking-at-notebooks-from-a-new-perspective-bfd06797f188
+
+ Tue, 05 Oct 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/xeus-2-0-cb460d4daed4
+ https://blog.jupyter.org/xeus-2-0-cb460d4daed4
+
+ Tue, 28 Sep 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/from-jupyter-to-the-moon-2e432df402c8
+ https://blog.jupyter.org/from-jupyter-to-the-moon-2e432df402c8
+
+ Fri, 24 Sep 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupyterlite-jupyter-%EF%B8%8F-webassembly-%EF%B8%8F-python-f6e2e41ab3fa
+ https://blog.jupyter.org/jupyterlite-jupyter-%EF%B8%8F-webassembly-%EF%B8%8F-python-f6e2e41ab3fa
+
+ Tue, 13 Jul 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://wolfv.medium.com/mamba-0-15-0-475d1dca0418
+ https://wolfv.medium.com/mamba-0-15-0-475d1dca0418
+
+ Fri, 09 Jul 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://www.polytechnique.edu/fondation/content/le-calcul-haute-performance-au-service-de-l%E2%80%99innovation
+ https://www.polytechnique.edu/fondation/content/le-calcul-haute-performance-au-service-de-l%E2%80%99innovation
+
+ Fri, 18 Jun 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/how-we-made-jupyter-notebooks-collaborative-with-yjs-b8dff6a9d8af
+ https://blog.jupyter.org/how-we-made-jupyter-notebooks-collaborative-with-yjs-b8dff6a9d8af
+
+ Sat, 12 Jun 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/retrolab-a-jupyterlab-distribution-with-a-retro-look-and-feel-8096b8b223d0
+ https://blog.jupyter.org/retrolab-a-jupyterlab-distribution-with-a-retro-look-and-feel-8096b8b223d0
+
+ Sun, 27 Jun 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://adelsalle.medium.com/rhumba-the-fast-r-distribution-is-available-on-windows-fa975b2aefa2
+ https://adelsalle.medium.com/rhumba-the-fast-r-distribution-is-available-on-windows-fa975b2aefa2
+
+ Tue, 18 May 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/enabling-the-jupyterlab-debugger-with-ipykernel-8d7248f522b0
+ https://blog.jupyter.org/enabling-the-jupyterlab-debugger-with-ipykernel-8d7248f522b0
+
+ Thu, 13 May 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@mari_meir/jupyter-%EF%B8%8F-%EF%B8%8F-cytoscape-e2e77be8e0f9
+ https://medium.com/@mari_meir/jupyter-%EF%B8%8F-%EF%B8%8F-cytoscape-e2e77be8e0f9
+
+ Tue, 11 May 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://johan-mabille.medium.com/zarray-a-dynamic-expression-system-based-on-xtensor-ded69f37ff5e
+ https://johan-mabille.medium.com/zarray-a-dynamic-expression-system-based-on-xtensor-ded69f37ff5e
+
+ Thu, 29 Apr 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/nbterm-jupyter-notebooks-in-the-terminal-6a2b55d08b70
+ https://blog.jupyter.org/nbterm-jupyter-notebooks-in-the-terminal-6a2b55d08b70
+
+ Mon, 26 Apr 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/abracadabra-bringing-the-magics-to-xeus-python-9d17bcfacb4
+ https://blog.jupyter.org/abracadabra-bringing-the-magics-to-xeus-python-9d17bcfacb4
+
+ Thu, 18 Feb 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/robostack/cross-platform-conda-packages-for-ros-fa1974fd1de3
+ https://medium.com/robostack/cross-platform-conda-packages-for-ros-fa1974fd1de3
+
+ Tue, 16 Feb 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/genomic-data-representation-in-jupyter-c57a5bb518d6
+ https://blog.jupyter.org/genomic-data-representation-in-jupyter-c57a5bb518d6
+
+ Mon, 08 Feb 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/an-sql-solution-for-jupyter-ef4a00a0d925?postPublishedType=initial
+ https://blog.jupyter.org/an-sql-solution-for-jupyter-ef4a00a0d925?postPublishedType=initial
+
+ Wed, 03 Feb 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/a-curiously-recurring-widget-library-261a65bd56fe
+ https://blog.jupyter.org/a-curiously-recurring-widget-library-261a65bd56fe
+
+ Wed, 27 Jan 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/robotic-process-automation-with-jupyterlab-713b5630e457
+ https://blog.jupyter.org/robotic-process-automation-with-jupyterlab-713b5630e457
+
+ Mon, 18 Jan 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/dashboarding-with-jupyterlab-3-789fcb1a5857
+ https://blog.jupyter.org/dashboarding-with-jupyterlab-3-789fcb1a5857
+
+ Fri, 08 Jan 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupyterlab-3-0-is-out-4f58385e25bb
+ https://blog.jupyter.org/jupyterlab-3-0-is-out-4f58385e25bb
+
+ Tue, 05 Jan 2021 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.llvm.org/posts/2020-12-21-interactive-cpp-for-data-science/
+ https://blog.llvm.org/posts/2020-12-21-interactive-cpp-for-data-science/
+
+ Wed, 23 Dec 2020 00:00:00 GMT
+
+
+ -
+
+
+ https://david-brochart.medium.com/xtensor-%EF%B8%8F-zarr-4f5cf25c65e5
+ https://david-brochart.medium.com/xtensor-%EF%B8%8F-zarr-4f5cf25c65e5
+
+ Tue, 15 Dec 2020 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/a-c-backend-for-vega-lite-bd2524b247c2
+ https://blog.jupyter.org/a-c-backend-for-vega-lite-bd2524b247c2
+
+ Wed, 02 Dec 2020 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/ipygany-jupyter-into-the-third-dimension-29a97597fc33
+ https://blog.jupyter.org/ipygany-jupyter-into-the-third-dimension-29a97597fc33
+
+ Wed, 14 Oct 2020 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@mari_meir/rhumba-a-faster-r-distribution-d619fb93043a
+ https://medium.com/@mari_meir/rhumba-a-faster-r-distribution-d619fb93043a
+
+ Tue, 13 Oct 2020 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/the-templating-system-of-nbconvert-6-47ea781eacd2
+ https://blog.jupyter.org/the-templating-system-of-nbconvert-6-47ea781eacd2
+
+ Sat, 26 Sep 2020 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@mari_meir/memestra-a21c0c1f362
+ https://medium.com/@mari_meir/memestra-a21c0c1f362
+
+ Mon, 21 Sep 2020 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@martinRenou/real-time-rendering-of-water-caustics-59cda1d74aa
+ https://medium.com/@martinRenou/real-time-rendering-of-water-caustics-59cda1d74aa
+
+ Thu, 27 Aug 2020 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupyterlab-ros-3dc9dab7f421
+ https://blog.jupyter.org/jupyterlab-ros-3dc9dab7f421
+
+ Tue, 11 Aug 2020 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/slicerjupyter-a-3d-slicer-kernel-for-interactive-publications-6f2ad829f635
+ https://blog.jupyter.org/slicerjupyter-a-3d-slicer-kernel-for-interactive-publications-6f2ad829f635
+
+ Wed, 08 Jul 2020 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@QuantStack/open-software-packaging-for-science-61cecee7fc23
+ https://medium.com/@QuantStack/open-software-packaging-for-science-61cecee7fc23
+
+ Sun, 19 Jul 2020 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/a-jupyter-kernel-for-sqlite-9549c5dcf551
+ https://blog.jupyter.org/a-jupyter-kernel-for-sqlite-9549c5dcf551
+
+ Thu, 11 Jun 2020 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/plasma-a-learning-platform-powered-by-jupyter-1b850fcd8624
+ https://blog.jupyter.org/plasma-a-learning-platform-powered-by-jupyter-1b850fcd8624
+
+ Mon, 11 May 2020 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/interactive-graph-visualization-in-jupyter-with-ipycytoscape-a8828a54ab63
+ https://blog.jupyter.org/interactive-graph-visualization-in-jupyter-with-ipycytoscape-a8828a54ab63
+
+ Thu, 30 Apr 2020 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/a-visual-debugger-for-jupyter-914e61716559
+ https://blog.jupyter.org/a-visual-debugger-for-jupyter-914e61716559
+
+ Wed, 25 Mar 2020 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/report-on-the-jupyter-community-workshop-on-dashboarding-14f8ad9f3c0
+ https://blog.jupyter.org/report-on-the-jupyter-community-workshop-on-dashboarding-14f8ad9f3c0
+
+ Fri, 14 Feb 2020 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@wolfv/introducing-scikit-geometry-ae1dccaad5fd
+ https://medium.com/@wolfv/introducing-scikit-geometry-ae1dccaad5fd
+
+ Fri, 24 Jan 2020 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-8-n-iterators-7df77e3223f7
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-8-n-iterators-7df77e3223f7
+
+ Tue, 07 Jan 2020 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@wolfv/2019-in-review-d7d03fb0d17d
+ https://medium.com/@wolfv/2019-in-review-d7d03fb0d17d
+
+ Thu, 02 Jan 2020 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@wolfv/robot-development-with-jupyter-ddae16d4e688
+ https://medium.com/@wolfv/robot-development-with-jupyter-ddae16d4e688
+
+ Tue, 31 Dec 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-7-n-broadcasting-cf37a974d029
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-7-n-broadcasting-cf37a974d029
+
+ Sun, 24 Nov 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/voila-gridstack-template-8a431c2b353e
+ https://blog.jupyter.org/voila-gridstack-template-8a431c2b353e
+
+ Mon, 11 Nov 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/a-slideshow-template-for-voil%C3%A0-apps-435f67d10b4f
+ https://blog.jupyter.org/a-slideshow-template-for-voil%C3%A0-apps-435f67d10b4f
+
+ Tue, 29 Oct 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@wolfv/ros-on-conda-forge-dca6827ac4b6
+ https://medium.com/@wolfv/ros-on-conda-forge-dca6827ac4b6
+
+ Mon, 28 Oct 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/ipycanvas-a-python-canvas-for-jupyter-bbb51e4777f7
+ https://blog.jupyter.org/ipycanvas-a-python-canvas-for-jupyter-bbb51e4777f7
+
+ Fri, 25 Oct 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/field-report-on-the-kernel-community-workshop-a4ad73a1a718
+ https://blog.jupyter.org/field-report-on-the-kernel-community-workshop-a4ad73a1a718
+
+ Mon, 07 Oct 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-6-n-operator-overloading-984c2e5b4171
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-6-n-operator-overloading-984c2e5b4171
+
+ Wed, 25 Sep 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/interactive-gis-in-jupyter-with-ipyleaflet-52f9657fa7a
+ https://blog.jupyter.org/interactive-gis-in-jupyter-with-ipyleaflet-52f9657fa7a
+
+ Wed, 25 Sep 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-5-n-expression-templates-d07332e73d1d
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-5-n-expression-templates-d07332e73d1d
+
+ Thu, 05 Sep 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/building-a-calculator-jupyter-kernel-4aed5764a295
+ https://blog.jupyter.org/building-a-calculator-jupyter-kernel-4aed5764a295
+
+ Tue, 16 Jul 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-4-n-value-semantics-6baa6856d313
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-4-n-value-semantics-6baa6856d313
+
+ Tue, 16 Jul 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/introducing-templates-for-jupyter-widget-layouts-f72bcb35a662
+ https://blog.jupyter.org/introducing-templates-for-jupyter-widget-layouts-f72bcb35a662
+
+ Thu, 04 Jul 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-3-n-the-constructors-65a177260638
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-3-n-the-constructors-65a177260638
+
+ Mon, 24 Jun 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-2-n-access-operators-57e8e3852263
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-2-n-access-operators-57e8e3852263
+
+ Thu, 20 Jun 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-1-n-n-dimensional-containers-f79f9f4966a7
+ https://medium.com/@johan.mabille/how-we-wrote-xtensor-1-n-n-dimensional-containers-f79f9f4966a7
+
+ Mon, 17 Jun 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/and-voil%C3%A0-f6a2c08a4a93
+ https://blog.jupyter.org/and-voil%C3%A0-f6a2c08a4a93
+
+ Tue, 11 Jun 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@wolfv/mamba-development-news-29e32aaa8d6c
+ https://medium.com/@wolfv/mamba-development-news-29e32aaa8d6c
+
+ Mon, 10 Jun 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@wolfv/building-an-open-source-continuous-benchmark-system-717839093962
+ https://medium.com/@wolfv/building-an-open-source-continuous-benchmark-system-717839093962
+
+ Wed, 29 May 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/ros-jupyter-b7e82b5e1202
+ https://blog.jupyter.org/ros-jupyter-b7e82b5e1202
+
+ Sun, 07 Apr 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@wolfv/making-conda-fast-again-4da4debfb3b7
+ https://medium.com/@wolfv/making-conda-fast-again-4da4debfb3b7
+
+ Thu, 28 Mar 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/data-science/interactive-spreadsheets-in-jupyter-32ab6ec0f4ff
+ https://medium.com/data-science/interactive-spreadsheets-in-jupyter-32ab6ec0f4ff
+
+ Fri, 08 Mar 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/a-new-python-kernel-for-jupyter-fcdf211e30a8
+ https://blog.jupyter.org/a-new-python-kernel-for-jupyter-fcdf211e30a8
+
+ Wed, 09 Jan 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@johan.mabille/xframe-towards-a-c-dataframe-26e1ccde211b
+ https://medium.com/@johan.mabille/xframe-towards-a-c-dataframe-26e1ccde211b
+
+ Fri, 04 Jan 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@johan.mabille/designing-language-bindings-with-xtensor-f32aa0f20db
+ https://medium.com/@johan.mabille/designing-language-bindings-with-xtensor-f32aa0f20db
+
+ Fri, 30 Nov 2018 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/data-science/video-streaming-in-the-jupyter-notebook-635bc5809e85
+ https://medium.com/data-science/video-streaming-in-the-jupyter-notebook-635bc5809e85
+
+ Mon, 19 Nov 2018 00:00:00 GMT
+
+
+ -
+
+
+ https://towardsdatascience.com/the-xtensor-vision-552dd978e9ad
+ https://towardsdatascience.com/the-xtensor-vision-552dd978e9ad
+
+ Sat, 10 Nov 2018 00:00:00 GMT
+
+
+ -
+
+
+ https://serge-sans-paille.github.io/pythran-stories/bye-bye-boostsimd-welcome-xsimd.html
+ https://serge-sans-paille.github.io/pythran-stories/bye-bye-boostsimd-welcome-xsimd.html
+
+ Thu, 31 Oct 2019 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@QuantStack/xtensor-c-and-the-julia-challenge-643d4b119761
+ https://medium.com/@QuantStack/xtensor-c-and-the-julia-challenge-643d4b119761
+
+ Wed, 24 Oct 2018 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@wolfv/the-julia-challenge-in-c-21272d36c002
+ https://medium.com/@wolfv/the-julia-challenge-in-c-21272d36c002
+
+ Fri, 12 Oct 2018 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/interpreted-c-for-gis-with-jupyter-ae191bc6fb8e
+ https://blog.jupyter.org/interpreted-c-for-gis-with-jupyter-ae191bc6fb8e
+
+ Tue, 24 Apr 2018 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/authoring-custom-jupyter-widgets-2884a462e724
+ https://blog.jupyter.org/authoring-custom-jupyter-widgets-2884a462e724
+
+ Mon, 05 Mar 2018 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/jupyter-receives-the-acm-software-system-award-d433b0dfe3a2
+ https://blog.jupyter.org/jupyter-receives-the-acm-software-system-award-d433b0dfe3a2
+
+ Fri, 02 Mar 2018 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/a-diagram-editor-for-jupyterlab-a254121ff919
+ https://blog.jupyter.org/a-diagram-editor-for-jupyterlab-a254121ff919
+
+ Mon, 26 Feb 2018 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@wolfv/fast-reductions-in-xtensor-with-simd-212a8543960a
+ https://medium.com/@wolfv/fast-reductions-in-xtensor-with-simd-212a8543960a
+
+ Tue, 20 Feb 2018 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@wolfv/faster-xtensor-87fcbe7f5293
+ https://medium.com/@wolfv/faster-xtensor-87fcbe7f5293
+
+ Sun, 18 Feb 2018 00:00:00 GMT
+
+
+ -
+
+
+ https://blog.jupyter.org/interactive-workflows-for-c-with-jupyter-fe9b54227d92
+ https://blog.jupyter.org/interactive-workflows-for-c-with-jupyter-fe9b54227d92
+
+ Wed, 29 Nov 2017 00:00:00 GMT
+
+
+ -
+
+
+ https://medium.com/@SylvainCorlay/scientific-computing-in-a-polyglot-world-with-xtensor-d81ff3865d6
+ https://medium.com/@SylvainCorlay/scientific-computing-in-a-polyglot-world-with-xtensor-d81ff3865d6
+
+ Fri, 05 May 2017 00:00:00 GMT
+
+
+
+
\ No newline at end of file