diff --git a/.eleventy.js b/.eleventy.js index f31703d3..dda2c9ad 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -13,6 +13,8 @@ const markdownItAnchor = require("markdown-it-anchor"); const markdownItHighlightJS = require('markdown-it-highlightjs') const emojiReadTime = require("@11tyrocks/eleventy-plugin-emoji-readtime"); const packageVersion = require("./package.json").version; +const htmlmin = require("html-minifier-terser"); +const CleanCSS = require("clean-css"); const mdOptions = { html: true, @@ -30,6 +32,30 @@ const mdAnchorOpts = { } module.exports = function (eleventyConfig) { + + eleventyConfig.addTransform("htmlmin", function(content, outputPath) { + if (outputPath && outputPath.endsWith(".html")) { + let minified = htmlmin.minify(content, { + useShortDoctype: true, + removeComments: true, + collapseWhitespace: true, + // You can add more options from the html-minifier-terser documentation + // For example, to minify CSS and JS within HTML: + // minifyCSS: true, + // minifyJS: true, + ignoreCustomComments: true, + collapseWhitespace: true, + collapseInlineTagWhitespace: true, + }); + return minified; + } + return content; // If not an HTML output, return content as-is + }); + + eleventyConfig.addFilter("cssmin", function (code) { + return new CleanCSS({}).minify(code).styles; + }); + if (process.env.ELEVENTY_ENV === "prod") { eleventyConfig.ignores.add("./src/posts/"); }; @@ -55,9 +81,13 @@ module.exports = function (eleventyConfig) { eleventyConfig.addPlugin(emojiReadTime); - eleventyConfig.addWatchTarget("src/sass/*.scss"); + eleventyConfig.addWatchTarget("src/css/*.css"); - eleventyConfig.addPassthroughCopy("src/img"); + eleventyConfig.addPassthroughCopy("src/img/*.webp"); + eleventyConfig.addPassthroughCopy("src/img/**/*.webp"); + eleventyConfig.addPassthroughCopy("src/img/touch/**"); + eleventyConfig.addPassthroughCopy("src/img/*.svg"); + eleventyConfig.addPassthroughCopy("src/css/**"); eleventyConfig.addPassthroughCopy("src/webfonts"); eleventyConfig.addPassthroughCopy("src/cache-polyfill.js"); eleventyConfig.addPassthroughCopy("src/CNAME"); @@ -126,7 +156,7 @@ module.exports = function (eleventyConfig) { tags: ["h2", "h3", "h4"], wrapper: "div", wrapperClass: "toc markdown-toc", - ul: true, + ul: false, flat: true }); eleventyConfig.addPlugin( diff --git a/.vscode/settings.json b/.vscode/settings.json index 5c45f6e6..9fdb8521 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,6 +6,7 @@ ], "cSpell.words": [ "Alfredlogo", + "ASBX", "Brookfield", "Codepen", "cssnano", @@ -35,6 +36,7 @@ "RHDM", "Roadmapping", "Saylent", + "Scryfall", "Shortcode", "Shriners", "Spiceworks", @@ -47,6 +49,7 @@ "Timetrak", "Trak", "UXPA", + "Vite", "webfonts", "Westborough", "Westford", diff --git a/docs/404.html b/docs/404.html index bc458987..e10a21a0 100644 --- a/docs/404.html +++ b/docs/404.html @@ -1,163 +1,7 @@ - - - - - - - - Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- Lost in the mountains -
-

Looks like you lost your way...

-

Go back to the home page by clicking the button below.

- Take me home -
-
- - -
Lost in the mountains
Looks like you lost your way...

Go back to the home page by clicking the button below.

- - + } \ No newline at end of file diff --git a/docs/about/index.html b/docs/about/index.html index 84638128..13366e8c 100644 --- a/docs/about/index.html +++ b/docs/about/index.html @@ -1,363 +1,18 @@ - - - - - - - - About | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

About

-

- Driven and passionate senior user experience designer with a background in software development. -

resume -
- - -
-
-
- -

Hello #

-

UX Designer, Developer, Program Manager. Creating software for the construction world. Previously at Red Hat and AWS. Collector of nerdy things…forever.

-
-

Adam Jolicoeur is a designer, developer, and program manager in Massachusetts. Starting as a help desk tech, he discovered a desire to create technology, rather than fixing it, which lead to a leap into the software engineering space.

-

While working at a small startup, Adam discovered the world of user experience design and realized that his future was before him. With a background in fine arts and knowledge in the software development space (Backbone/Angular, anyone?), Adam took another step forward by becoming the first ux designer at a financial startup. Leading the next-generation of product design for card processors and financial institutions, Adam took that experience and used it to catapult into the world of publicly traded companies.

-

With a move to Red Hat (later acquired by IBM), Adam accelerated his career path (and filled up many pages in his passport) by working with industry experts and the open source community on enterprise software experiences. After five years at Red Hat, Adam joined a small team at Amazon in AWS’s Safety Engineering group to work on a new issue tracking and management product. While his time at Amazon came to abrupt end during the layoffs of 2023, the knowledge gained from such an environment only strengthened his desire to create in a collaborative and forward-looking space.

-

Adam has continued his career at Component Assembly Systems as their Lead Program Manager and Head of UX.

-

Career #

-
    -
  • Lead Program Manager / Head of UX @ Component Assembly Systems
    2023-Present
  • -
  • Senior UX Designer @ Amazon (AWS)
    2021-2023
  • -
  • Senior UX Designer @ Red Hat
    2016-2021
  • -
  • UX Designer @ Saylent Technologies
    2014-2016
  • -
  • UI Developer @ Black Duck Software
    2013-2014
  • -
  • Contractor @ Switchback, Inc.
    2010-2021
  • -
  • Help Desk Analyst @ Conservation Services Group
    2008-2010
  • -
-

Education #

-

I attended MCLA (Massachusetts College of Liberal Arts, formerly North Adams State) graduating with degrees in Fine and Performing Arts and Arts Management. While at MCLA, I was the President of the Lacrosse Club (now a recognized D3 sport) while also receiving a variety of accolades such as Alpha Chi, National Scholars Honor Society, and the Who’s Who in American Colleges and Universities.

- -
- -
-
-
- - - - - + } \ No newline at end of file diff --git a/docs/alfred/workflows/index.html b/docs/alfred/workflows/index.html deleted file mode 100644 index a9906d05..00000000 --- a/docs/alfred/workflows/index.html +++ /dev/null @@ -1,358 +0,0 @@ - - - - - - - - Alfred Workflows | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Alfred Workflows

-

- A list of my favorite Alfred workflows -

- - -

Alfred Workflows

-

A list of my favorite Alfred Workflows, broken down by those that I have downloaded and those that I have created or modified.

-

Note: Requires the Alfred Powerpack to use.

-

Downloaded #

- -

Created / Modified #

- - -
- - - - - - - - diff --git a/docs/apps/collectsomemore/index.html b/docs/apps/collectsomemore/index.html index d2b83af1..8a514f5b 100644 --- a/docs/apps/collectsomemore/index.html +++ b/docs/apps/collectsomemore/index.html @@ -1,345 +1,18 @@ - - - - - - - - Collect Some More | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Collect Some More

-

- An app for cataloging your collections. -

- - -
-
-

Status #

-

My app is currently available through TestFlight while I get it to a releasable state. If you’d like to give it a try, complete a request through the GitHub Repo today!

-

Releases #

-

Releases are listed on the releases page.

-

Privacy Policy #

-

Read the privacy policy here.

- -
- -
-
-
- - - - - + } \ No newline at end of file diff --git a/docs/apps/collectsomemore/privacy/index.html b/docs/apps/collectsomemore/privacy/index.html index 030db3ce..61adad52 100644 --- a/docs/apps/collectsomemore/privacy/index.html +++ b/docs/apps/collectsomemore/privacy/index.html @@ -1,225 +1,11 @@ - - - - - - - - Privacy Policy | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Privacy Policy

-

Last updated: June 09, 2025

-

This Privacy Policy describes Our policies and procedures on the collection, use and disclosure of Your information when You use the Service and tells You about Your privacy rights and how the law protects You.

-

We use Your Personal data to provide and improve the Service. By using the Service, You agree to the collection and use of information in accordance with this Privacy Policy. This Privacy Policy has been created with the help of the Free Privacy Policy Generator.

-

Interpretation and Definitions

-

Interpretation

-

The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural.

-

Definitions

-

For the purposes of this Privacy Policy:

- -

Collecting and Using Your Personal Data

-

Types of Data Collected

-

Personal Data

-

While using Our Service, We may ask You to provide Us with certain personally identifiable information that can be used to contact or identify You. Personally identifiable information may include, but is not limited to:

- -

Usage Data

-

Usage Data is collected automatically when using the Service.

-

Usage Data may include information such as Your Device's Internet Protocol address (e.g. IP address), browser type, browser version, the pages of our Service that You visit, the time and date of Your visit, the time spent on those pages, unique device identifiers and other diagnostic data.

-

When You access the Service by or through a mobile device, We may collect certain information automatically, including, but not limited to, the type of mobile device You use, Your mobile device unique ID, the IP address of Your mobile device, Your mobile operating system, the type of mobile Internet browser You use, unique device identifiers and other diagnostic data.

-

We may also collect information that Your browser sends whenever You visit our Service or when You access the Service by or through a mobile device.

-

Use of Your Personal Data

-

The Company may use Personal Data for the following purposes:

- -

We may share Your personal information in the following situations:

- -

Retention of Your Personal Data

-

The Company will retain Your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use Your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies.

-

The Company will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of Our Service, or We are legally obligated to retain this data for longer time periods.

-

Transfer of Your Personal Data

-

Your information, including Personal Data, is processed at the Company's operating offices and in any other places where the parties involved in the processing are located. It means that this information may be transferred to — and maintained on — computers located outside of Your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from Your jurisdiction.

-

Your consent to this Privacy Policy followed by Your submission of such information represents Your agreement to that transfer.

-

The Company will take all steps reasonably necessary to ensure that Your data is treated securely and in accordance with this Privacy Policy and no transfer of Your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of Your data and other personal information.

-

Delete Your Personal Data

-

You have the right to delete or request that We assist in deleting the Personal Data that We have collected about You.

-

Our Service may give You the ability to delete certain information about You from within the Service.

-

You may update, amend, or delete Your information at any time by signing in to Your Account, if you have one, and visiting the account settings section that allows you to manage Your personal information. You may also contact Us to request access to, correct, or delete any personal information that You have provided to Us.

-

Please note, however, that We may need to retain certain information when we have a legal obligation or lawful basis to do so.

-

Disclosure of Your Personal Data

-

Business Transactions

-

If the Company is involved in a merger, acquisition or asset sale, Your Personal Data may be transferred. We will provide notice before Your Personal Data is transferred and becomes subject to a different Privacy Policy.

-

Law enforcement

-

Under certain circumstances, the Company may be required to disclose Your Personal Data if required to do so by law or in response to valid requests by public authorities (e.g. a court or a government agency).

-

Other legal requirements

-

The Company may disclose Your Personal Data in the good faith belief that such action is necessary to:

- -

Security of Your Personal Data

-

The security of Your Personal Data is important to Us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While We strive to use commercially acceptable means to protect Your Personal Data, We cannot guarantee its absolute security.

-

Children's Privacy

-

Our Service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from anyone under the age of 13. If You are a parent or guardian and You are aware that Your child has provided Us with Personal Data, please contact Us. If We become aware that We have collected Personal Data from anyone under the age of 13 without verification of parental consent, We take steps to remove that information from Our servers.

-

If We need to rely on consent as a legal basis for processing Your information and Your country requires consent from a parent, We may require Your parent's consent before We collect and use that information.

-

Links to Other Websites

-

Our Service may contain links to other websites that are not operated by Us. If You click on a third party link, You will be directed to that third party's site. We strongly advise You to review the Privacy Policy of every site You visit.

-

We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.

-

Changes to this Privacy Policy

-

We may update Our Privacy Policy from time to time. We will notify You of any changes by posting the new Privacy Policy on this page.

-

We will let You know via email and/or a prominent notice on Our Service, prior to the change becoming effective and update the "Last updated" date at the top of this Privacy Policy.

-

You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.

-

Contact Us

-

If you have any questions about this Privacy Policy, You can contact us:

- -
- -

Privacy Policy

Last updated: June 09, 2025

This Privacy Policy describes Our policies and procedures on the collection, use and disclosure of Your information when You use the Service and tells You about Your privacy rights and how the law protects You.

We use Your Personal data to provide and improve the Service. By using the Service, You agree to the collection and use of information in accordance with this Privacy Policy. This Privacy Policy has been created with the help of theFree Privacy Policy Generator.

Interpretation and Definitions

Interpretation

The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural.

Definitions

For the purposes of this Privacy Policy:

Collecting and Using Your Personal Data

Types of Data Collected

Personal Data

While using Our Service, We may ask You to provide Us with certain personally identifiable information that can be used to contact or identify You. Personally identifiable information may include, but is not limited to:

Usage Data

Usage Data is collected automatically when using the Service.

Usage Data may include information such as Your Device's Internet Protocol address (e.g. IP address), browser type, browser version, the pages of our Service that You visit, the time and date of Your visit, the time spent on those pages, unique device identifiers and other diagnostic data.

When You access the Service by or through a mobile device, We may collect certain information automatically, including, but not limited to, the type of mobile device You use, Your mobile device unique ID, the IP address of Your mobile device, Your mobile operating system, the type of mobile Internet browser You use, unique device identifiers and other diagnostic data.

We may also collect information that Your browser sends whenever You visit our Service or when You access the Service by or through a mobile device.

Use of Your Personal Data

The Company may use Personal Data for the following purposes:

We may share Your personal information in the following situations:

Retention of Your Personal Data

The Company will retain Your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use Your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies.

The Company will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of Our Service, or We are legally obligated to retain this data for longer time periods.

Transfer of Your Personal Data

Your information, including Personal Data, is processed at the Company's operating offices and in any other places where the parties involved in the processing are located. It means that this information may be transferred to — and maintained on — computers located outside of Your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from Your jurisdiction.

Your consent to this Privacy Policy followed by Your submission of such information represents Your agreement to that transfer.

The Company will take all steps reasonably necessary to ensure that Your data is treated securely and in accordance with this Privacy Policy and no transfer of Your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of Your data and other personal information.

Delete Your Personal Data

You have the right to delete or request that We assist in deleting the Personal Data that We have collected about You.

Our Service may give You the ability to delete certain information about You from within the Service.

You may update, amend, or delete Your information at any time by signing in to Your Account, if you have one, and visiting the account settings section that allows you to manage Your personal information. You may also contact Us to request access to, correct, or delete any personal information that You have provided to Us.

Please note, however, that We may need to retain certain information when we have a legal obligation or lawful basis to do so.

Disclosure of Your Personal Data

Business Transactions

If the Company is involved in a merger, acquisition or asset sale, Your Personal Data may be transferred. We will provide notice before Your Personal Data is transferred and becomes subject to a different Privacy Policy.

Law enforcement

Under certain circumstances, the Company may be required to disclose Your Personal Data if required to do so by law or in response to valid requests by public authorities (e.g. a court or a government agency).

Other legal requirements

The Company may disclose Your Personal Data in the good faith belief that such action is necessary to:

Security of Your Personal Data

The security of Your Personal Data is important to Us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While We strive to use commercially acceptable means to protect Your Personal Data, We cannot guarantee its absolute security.

Children's Privacy

Our Service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from anyone under the age of 13. If You are a parent or guardian and You are aware that Your child has provided Us with Personal Data, please contact Us. If We become aware that We have collected Personal Data from anyone under the age of 13 without verification of parental consent, We take steps to remove that information from Our servers.

If We need to rely on consent as a legal basis for processing Your information and Your country requires consent from a parent, We may require Your parent's consent before We collect and use that information.

Links to Other Websites

Our Service may contain links to other websites that are not operated by Us. If You click on a third party link, You will be directed to that third party's site. We strongly advise You to review the Privacy Policy of every site You visit.

We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.

Changes to this Privacy Policy

We may update Our Privacy Policy from time to time. We will notify You of any changes by posting the new Privacy Policy on this page.

We will let You know via email and/or a prominent notice on Our Service, prior to the change becoming effective and update the "Last updated" date at the top of this Privacy Policy.

You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.

Contact Us

If you have any questions about this Privacy Policy, You can contact us:

- - - + } \ No newline at end of file diff --git a/docs/apps/collectsomemore/releases/index.html b/docs/apps/collectsomemore/releases/index.html index c53ad253..88022a19 100644 --- a/docs/apps/collectsomemore/releases/index.html +++ b/docs/apps/collectsomemore/releases/index.html @@ -1,342 +1,18 @@ - - - - - - - - CollectSomeMore Releases | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

CollectSomeMore Releases

-

- A list of releases of the CollectSomeMore app -

- - -
-
-

Releases #

-

The current Version is v1.0.0, Build 38. You can download the latest release through TestFlight.

-

View all on GitHub

- -
- -
-
-
- - - - - + } \ No newline at end of file diff --git a/docs/apps/collectsomemore/support/index.html b/docs/apps/collectsomemore/support/index.html index 371445b6..73cdedb1 100644 --- a/docs/apps/collectsomemore/support/index.html +++ b/docs/apps/collectsomemore/support/index.html @@ -1,90 +1,11 @@ - - - - - - - - Support | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Collect Some More #

-

Have an issue? File a request in the project repo on GitHub: New Issue

-

Have an idea for an enhancement of feature? File a request on the project repo: Feature Request

- -

Collect Some More#

Have an issue? File a request in the project repo on GitHub:New Issue

Have an idea for an enhancement of feature? File a request on the project repo:Feature Request

- - - + } \ No newline at end of file diff --git a/docs/apps/index.html b/docs/apps/index.html index 19dc10c8..32723431 100644 --- a/docs/apps/index.html +++ b/docs/apps/index.html @@ -1,352 +1,18 @@ - - - - - - - - Apps | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Apps

-

- Various apps available from me. -

- - -
-
- - -
-
-
- - - - - + } \ No newline at end of file diff --git a/docs/archives/archives/index.html b/docs/archives/archives/index.html deleted file mode 100644 index d25eb15a..00000000 --- a/docs/archives/archives/index.html +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - - - Archived Pages | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Archived Pages

-

- -

- - - - - - - - - - - - - diff --git a/docs/archives/town-selectman/index.html b/docs/archives/town-selectman/index.html index 241b953f..c643e9d4 100644 --- a/docs/archives/town-selectman/index.html +++ b/docs/archives/town-selectman/index.html @@ -1,475 +1,15 @@ - - - - - - - - Archived | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Archived

-

- Old page when I ran for a position on the Brookfield Select Board. -

- - - -
-
-
-
-

Adam J. Jolicoeur

-

Ideas for the future

-
-
-
-
-
-
-

Introduction

-

My name is Adam Jolicoeur, and I am running for Town Selectman.

-
-
- Headshot of Adam Jolicoeur -
-
-

Six years ago, I moved to Brookfield with my wife where together we live with our son, 3 dogs, and our horse. We chose to move to Brookfield because of the community, local activities (we love to hike and kayak), and the school system. With both of us having grown up in tight-knit communities, we felt Brookfield would be the perfect place to start and raise a family. We love to support the community by attending events and buying local (especially from our local farmers). With everything happening over the past few months, it has become even more apparent that a town like Brookfield can still thrive.

-

Why am I running? Because I know that we can continue to improve as a town. By electing me, you will have someone working for you - no personal agendas, not biases, no looking backwards, and no change just for the sake of change.

-
-
-
-
-
-
-
-
-

Background

-

I am an Eagle Scout (once an Eagle, always an Eagle) and have been a registered Boy Scout for 20 years. Locally, I am the Treasurer for three non-profit organizations, and am an avid hiker and kayaker. I've traveled around the world (Iceland, England, and the Czech Republic, to name a few) and have lived in a variety of towns across the state. I went to school in North Adams and have Bachelor Degrees in both Music and Arts Management.

-

I graduated from Massachusetts College of Liberal Arts (MCLA) in 2008, with two Bachelor Degrees (Fine and Performing Arts with a Concentration in Music and Arts Management with a minor in Business Administration). I was also a student of Williams College's jazz program, performing in the Berkshires and traveling to Mexico City to teach students how to play and write jazz music.

-

I currently work at Red Hat, Inc. (an open source software company based out of Westford with corporate headquarters in Raleigh, NC) as a Senior Software Engineer in the User Experience Department. I design and create applications and websites for various products and services, focusing on the user experience. My job has allowed me to travel around the country and world, presenting me with many opportunities to learn about new cultures and people.

-

In my life, I have met almost every type of individual with every mix of personalities, which I believe will only help in my interactions with the members of our town. I know that Brookfield has the potential to become one of the premier towns in the area for those looking for a historical adventure spot where they can enjoy the quiet of nature while escaping the bustling city life.

-
-
-
-
-
-
-

Experience

-

Non-profit Work

-

The Masonic Angel Foundation

-

Through working with schools and other outreach programs, The MAF provides clothing and financial assistance to families in need. It is all anonymous (hence why we work with another group) and we never ask for names/addresses/etc - just what they need/how we can help.

-

The Rutland Masonic Charitable and Educational Association

-

We work with the Rutland community to sponsor various events (4th of July Parade, Christmas celebrations, etc.) and provide community outreach. Our current building is actually one of the original schoolhouses in town, which our founders moved to it's current location around 1910.

-

Rufus Putnam Lodge A.F. & A.M.

-

A Masonic Lodge based out of Rutland, MA. We contribute to various charities in Central Mass (concentrating in Rutland and the immediately surrounding towns), as well as support the Shriners Hospitals for Children and various youth organization (Boy Scouts, Girl Scouts, DeMolay, and Rainbow).

-

Community outreach

-

I am part of a group of Eagle Scouts that assist potential Eagle Scouts with attaining the rank of Eagle. We travel around the Commonwealth to Court of Honors (when requested) to support those that have earned the rank of Eagle. When called upon, we provide manpower and/or financial assistance to those that request it - this is usually in the form of donations for/of supplies or by using our contacts to assist the Scout in their journey to Eagle.

-
-
-
-
-
-
-

Positions

-

Hiring a Town Administrator

-

At the last town meeting, I voted for the approval of a Town Administrator.

-

As part of hiring a Town Administrator, I would propose the formation of committees to work with our elected officials, under the office of the Town Administrator. While the Town Administrator would report to the Selectmen, these committees would be there specifically to support the Town Administrator and to provide assistance with the multitude of jobs required of the position (including, but not limited to, fiscal management, operational oversight, collective bargaining, capital planning, labor relations, public construction, and procurement).

-

It takes the appropriate checks and balances, a strong leadership structure, and fiscal responsibility to bring any entity back to a positive position.

-

Tasse's Fuel (propane installation)

-

- Disclaimer: As a current Planning Board member, I voted for the Tasse's Fuel plan -

-

- Facts and Information: - Based off of the facts presented, I believe that having Tasse's Fuel in town would be a benefit to growing Brookfield's commercial footprint, while still maintaining a safe place to live. Not only is it permitted based off of the Brookfield Zoning By-Laws, but the installation and service has been approved by the Massachusetts State Fire Marshal's Office and no safety concerns have been expressed by either the Brookfield Fire Department or the Brookfield Police Department. Additionally, the current Board of Selectmen approved the storage license. -

-

- Financial Considerations: - According to the letter presented to the Town of Brookfield, Tasse's Fuel would bring in up to $25,000 a year in property and excise taxes. This money would be a of great use to the town, allowing us to improve our infrastructure, expand our community offerings (athletic fields updates, senior center enhancements, South Pond improvements, etc), and allow us to move towards a fiscally-positive position. -

-

Cable Access / Information Technology

-

Since I moved to Brookfield, I have watched various Town Meetings on YouTube, with varying degrees of quality and quantity of videos. Cable access, or any form of technology that provides accessibility to town functions, is pivotal for the community to become, and remain, engaged. With my background, I have the knowledge to assist the various committees with setting up video feeds and YouTube channels, which would allow Brookfield citizens to interact with the various committees, without having to be physically present (especially pertinent in this day and age).

-

As a designer and developer, I would be able to apply my unique skills towards helping Brookfield grow our social footprint, and improve our continuity between our various platforms (website, Facebook, YouTube, etc), and reach out to those that have come to rely on technology in their daily lives.

-
-
-
-
-
-
-

Goals

-

To put it simply, I am pro-business (especially small business) and pro-technology.

-

As my Planning Board record shows, if there is nothing legally stopping a business from opening or moving to Brookfield, and that business would be a benefit to the town, I am for it. Brookfield has been passed over, for one reason or another, by many businesses (as one can easily see by those in East Brookfield, West Brookfield, North Brookfield, and Sturbridge) and that should not be the case. The town has a lot to offer, a strong community to support it (just look at the Clam Box!) and ample space for small business owners to grow and be successful.

-

To anyone that has attended a board meeting of any kind this past year, it is clear to see that Brookfield is due for technological improvements. In the beginning, all of the boards used a variety of different conference calling systems (now seemingly synced on Zoom), with individual boards paying for subscriptions (rather than the town covering the cost for all, like a business would). Our town website is difficult to update, is often out-of-date (even with the boards and committees attempting to keep them up-to-date), and is not the easiest to find information on. Often times, one has to go to a non-town site in order to find meeting information and/or agendas.

-

To improve the town's technology stance, I would switch over to a single Zoom account (rather than individual committees and board paying for their own), combine the various websites and data into one site (making a single source of information), and provide training and access to those in the community who wish to learn about the latest technology and options available to them. Everyone involved in a town position should know how to host a Zoom call (should the occasion arise), access their town email account (everyone should have one), and be able to connect with the community digitally. Without the Brookfield, MA Community Facebook group, I believe that a lot of information would have been missed by the residents, due to the lack of official digital communication. -

-
-
-
-
-
-
-

FAQ

-

-

    -
  • Who are you? -
      -
    • My name is Adam Jolicoeur, and you can learning more about me here.
    • -
    -
  • -
  • Why are you running? -
      -
    • I believe that it is time for new ideas - ones that look to the future while still learning from the past.
    • -
    -
  • -
  • How long have you lived in town? -
      -
    • 6 years
    • -
    -
  • -
  • Do you hold any other positions or have committee responsibilities in town? -
      -
    • Yes - I will be entering into my 2nd year of my 5 year term on the Planning Board.
    • -
    -
  • -
  • If you are not elected, will you run again? -
      -
    • 100% This is not something I've decided to do on a whim or consider a one-time deal. I've thought about this for the past year and conferred with my family, from whom I have their full support.
    • -
    -
  • -
  • How can I ask you additional questions? -
      -
    • Of course! You can send any questions to me via e-mail, or reach out through the Brookfield Community Facebook group. Disclaimer: Any questions/responses may also be added to this site for others to view.
    • -
    -
  • -
-

-
-
-
-
- -
- - - - - + } \ No newline at end of file diff --git a/docs/connect/index.html b/docs/connect/index.html index 41b61858..afc618a8 100644 --- a/docs/connect/index.html +++ b/docs/connect/index.html @@ -1,355 +1,15 @@ - - - - - - - - Connect | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Connect

-

- -

- - -
-
-
- - Banner image from LinkedIn profile - Follow on LinkedIn - - - GitHub statistics widget - Say Hello on GitHub - - -

Find me on Pixelfed

- Follow me on Pixelfed -
-
-
-
- -
- - - - - + } \ No newline at end of file diff --git a/docs/contact/index.html b/docs/contact/index.html index b56a27b2..8eb35262 100644 --- a/docs/contact/index.html +++ b/docs/contact/index.html @@ -1,89 +1,11 @@ - - - - - - - - Contact | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Contact

- - -

Contact

- - - + } \ No newline at end of file diff --git a/docs/credits/index.html b/docs/credits/index.html index bac71306..9beb5e5a 100644 --- a/docs/credits/index.html +++ b/docs/credits/index.html @@ -1,410 +1,19 @@ - - - - - - - - Credits | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Credits

-

- -

- - -
-
-

Giving credit where credit is due, this page is based off of the Credits page from Lea Verou.

-
-

This site was built using Eleventy, hosted on Cloudflare Pages, with previews deployed with Cloudflare. Certificate courtesy of Cloudflare and Let’s Encrypt.

-

Libraries #

- -

Fonts #

-
  :root {
-    --sl-font-sans: "Oswald", sans-serif;
-    --sl-font-mono: "Fira Mono", monospace;
-    --sl-font-serif: "Lato", sans-serif;
-    --bs-font-sans-serif: "Lato", serif;
-  }
-
    -
  • Oswald -
      -
    • Headers, specified through general <H> tags and CSS classes
    • -
    -
  • -
  • Lato -
      -
    • Paragraphs, specified through general <p> tags and CSS classes
    • -
    -
  • -
  • Fira Mono -
      -
    • Code blocks, specified through general <code> tags and CSS classes
    • -
    -
  • -
-

Icons #

-

A custom icon component (icon-component.js) is used to render icons as web components with Font Awesome as the preferred icon library.

-
  <fa-icon type="brands" name="github" size="md"></fa-icon>
-
-

Plugins #

- -

Tools #

-
    -
  • VS Code -
      -
    • default editor, though I’ve been using Cursor more lately.
    • -
    -
  • -
  • Figma -
      -
    • design tool for creating the overall design, color palette, and a11y checking.
    • -
    -
  • -
  • GitHub -
      -
    • for hosting code and site deployment.
    • -
    -
  • -
  • Cloudflare -
      -
    • testing any site changes via pull requests before merging to main.
    • -
    -
  • -
- -
- -
-
-
- - - - - + } \ No newline at end of file diff --git a/docs/css/beer.min.css b/docs/css/beer.min.css new file mode 100644 index 00000000..d1d892f9 --- /dev/null +++ b/docs/css/beer.min.css @@ -0,0 +1 @@ +:root{--size: 1rem;--font: Inter, Roboto, "Helvetica Neue", "Arial Nova", "Nimbus Sans", Noto Sans, Arial, sans-serif;--font-icon: "Material Symbols Outlined";--speed1: .1s;--speed2: .2s;--speed3: .3s;--speed4: .4s;--active: rgb(128 128 128 / .192);--overlay: rgb(0 0 0 / .5);--elevate1: 0 .125rem .125rem 0 rgb(0 0 0 / .32);--elevate2: 0 .25rem .5rem 0 rgb(0 0 0 / .4);--elevate3: 0 .375rem .75rem 0 rgb(0 0 0 / .48);--top: env(safe-area-inset-top);--bottom: env(safe-area-inset-bottom);--left: env(safe-area-inset-left);--right: env(safe-area-inset-right)}:root,body.light{--primary: #6750a4;--on-primary: #ffffff;--primary-container: #e9ddff;--on-primary-container: #22005d;--secondary: #625b71;--on-secondary: #ffffff;--secondary-container: #e8def8;--on-secondary-container: #1e192b;--tertiary: #7e5260;--on-tertiary: #ffffff;--tertiary-container: #ffd9e3;--on-tertiary-container: #31101d;--error: #ba1a1a;--on-error: #ffffff;--error-container: #ffdad6;--on-error-container: #410002;--background: #fffbff;--on-background: #1c1b1e;--surface: #fdf8fd;--on-surface: #1c1b1e;--surface-variant: #e7e0eb;--on-surface-variant: #49454e;--outline: #7a757f;--outline-variant: #cac4cf;--shadow: #000000;--scrim: #000000;--inverse-surface: #313033;--inverse-on-surface: #f4eff4;--inverse-primary: #cfbcff;--surface-dim: #ddd8dd;--surface-bright: #fdf8fd;--surface-container-lowest: #ffffff;--surface-container-low: #f7f2f7;--surface-container: #f2ecf1;--surface-container-high: #ece7eb;--surface-container-highest: #e6e1e6}body.dark{--primary: #cfbcff;--on-primary: #381e72;--primary-container: #4f378a;--on-primary-container: #e9ddff;--secondary: #cbc2db;--on-secondary: #332d41;--secondary-container: #4a4458;--on-secondary-container: #e8def8;--tertiary: #efb8c8;--on-tertiary: #4a2532;--tertiary-container: #633b48;--on-tertiary-container: #ffd9e3;--error: #ffb4ab;--on-error: #690005;--error-container: #93000a;--on-error-container: #ffb4ab;--background: #1c1b1e;--on-background: #e6e1e6;--surface: #141316;--on-surface: #e6e1e6;--surface-variant: #49454e;--on-surface-variant: #cac4cf;--outline: #948f99;--outline-variant: #49454e;--shadow: #000000;--scrim: #000000;--inverse-surface: #e6e1e6;--inverse-on-surface: #313033;--inverse-primary: #6750a4;--surface-dim: #141316;--surface-bright: #3a383c;--surface-container-lowest: #0f0e11;--surface-container-low: #1c1b1e;--surface-container: #201f22;--surface-container-high: #2b292d;--surface-container-highest: #363438}@font-face{font-family:Material Symbols Outlined;font-style:normal;font-weight:400;font-display:block;src:url(material-symbols-outlined.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/beercss@3.11.17/dist/cdn/material-symbols-outlined.woff2) format("woff2")}@font-face{font-family:Material Symbols Rounded;font-style:normal;font-weight:400;font-display:block;src:url(material-symbols-rounded.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/beercss@3.11.17/dist/cdn/material-symbols-rounded.woff2) format("woff2")}@font-face{font-family:Material Symbols Sharp;font-style:normal;font-weight:400;font-display:block;src:url(material-symbols-sharp.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/beercss@3.11.17/dist/cdn/material-symbols-sharp.woff2) format("woff2")}@font-face{font-family:Material Symbols Subset;font-style:normal;font-weight:400;font-display:block;src:url(material-symbols-subset.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/beercss@3.11.17/dist/cdn/material-symbols-subset.woff2) format("woff2")}*{-webkit-tap-highlight-color:transparent;position:relative;vertical-align:middle;color:inherit;margin:0;padding:0;border-radius:inherit;box-sizing:border-box}*:after,*:before{pointer-events:none}body{color:var(--on-surface);background-color:var(--surface);overflow-x:hidden}label{font-size:.75rem;vertical-align:baseline}a,b,i,span,strong,em,code{vertical-align:baseline}a,button,.button{cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;border:none;font-family:inherit;outline:inherit;justify-content:center}a,button,.button,i,label{-webkit-user-select:none;user-select:none}body ::-webkit-scrollbar,body ::-webkit-scrollbar-thumb,body ::-webkit-scrollbar-button{background:none;inline-size:.4rem;block-size:.4rem}body :is(:hover,:focus)::-webkit-scrollbar-thumb{background:var(--outline);border-radius:1rem}*+:is(address,article,blockquote,code,.field,fieldset,form,.grid,h1,h2,h3,h4,h5,h6,nav,ol,p,pre,.row,section,aside,table,.tabs,ul){margin-block-start:1rem}:is(a,button,.button,.chip):focus-visible{outline:.125rem solid var(--primary);outline-offset:.25rem}:is(nav,.row,li).group>:focus-visible{z-index:1}.transparent{background-color:transparent!important;box-shadow:none!important;color:inherit!important}.primary{background-color:var(--primary)!important;color:var(--on-primary)!important}.primary-text{color:var(--primary)!important}.primary-border{border-color:var(--primary)!important}.primary-container{background-color:var(--primary-container)!important;color:var(--on-primary-container)!important}.secondary{background-color:var(--secondary)!important;color:var(--on-secondary)!important}.secondary-text{color:var(--secondary)!important}.secondary-border{border-color:var(--secondary)!important}.secondary-container{background-color:var(--secondary-container)!important;color:var(--on-secondary-container)!important}.tertiary{background-color:var(--tertiary)!important;color:var(--on-tertiary)!important}.tertiary-text{color:var(--tertiary)!important}.tertiary-border{border-color:var(--tertiary)!important}.tertiary-container{background-color:var(--tertiary-container)!important;color:var(--on-tertiary-container)!important}.error{background-color:var(--error)!important;color:var(--on-error)!important}.error-text{color:var(--error)!important}.error-border{border-color:var(--error)!important}.error-container{background-color:var(--error-container)!important;color:var(--on-error-container)!important}.background{background-color:var(--background)!important;color:var(--on-background)!important}.surface,.surface-dim,.surface-bright,.surface-container-lowest,.surface-container-low,.surface-container,.surface-container-high,.surface-container-highest{background-color:var(--surface)!important;color:var(--on-surface)!important}.surface-variant{background-color:var(--surface-variant)!important;color:var(--on-surface-variant)!important}.inverse-surface{background-color:var(--inverse-surface);color:var(--inverse-on-surface)}.inverse-primary{background-color:var(--inverse-primary);color:var(--primary)}.inverse-primary-text{color:var(--inverse-primary)!important}.inverse-primary-border{border-color:var(--inverse-primary)!important}.surface-dim{background-color:var(--surface-dim)!important}.surface-bright{background-color:var(--surface-bright)!important}.surface-container-lowest{background-color:var(--surface-container-lowest)!important}.surface-container{background-color:var(--surface-container)!important}.surface-container-high{background-color:var(--surface-container-high)!important}.surface-container-highest{background-color:var(--surface-container-highest)!important}.surface-container-low{background-color:var(--surface-container-low)!important}.black{background-color:#000!important}.black-border{border-color:#000!important}.black-text{color:#000!important}.white{background-color:#fff!important}.white-border{border-color:#fff!important}.white-text{color:#fff!important}.transparent-border{border-color:transparent!important}.transparent-text{color:transparent!important}.fill:not(i){background-color:var(--surface-variant)!important;color:var(--on-surface-variant)!important}.middle-align{display:flex;align-items:center!important}.bottom-align{display:flex;align-items:flex-end!important}.top-align{display:flex;align-items:flex-start!important}.left-align{text-align:start;justify-content:flex-start!important}.right-align{text-align:end;justify-content:flex-end!important}.center-align{text-align:center;justify-content:center!important}[class*=blur],[class*=blur].light{--_blur: 1rem;-webkit-backdrop-filter:blur(var(--_blur));backdrop-filter:blur(var(--_blur));color:var(--on-surface);background-color:#ffffff80!important}.dark [class*=blur],[class*=blur].dark{background-color:#00000080!important}.small-blur{--_blur: .5rem}.large-blur{--_blur: 1.5rem}.red,.red6{background-color:#f44336!important}.red-border{border-color:#f44336!important}.red-text{color:#f44336!important}.red1{background-color:#ffebee!important}.red2{background-color:#ffcdd2!important}.red3{background-color:#ef9a9a!important}.red4{background-color:#e57373!important}.red5{background-color:#ef5350!important}.red7{background-color:#e53935!important}.red8{background-color:#d32f2f!important}.red9{background-color:#c62828!important}.red10{background-color:#b71c1c!important}.pink,.pink6{background-color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-text{color:#e91e63!important}.pink1{background-color:#fce4ec!important}.pink2{background-color:#f8bbd0!important}.pink3{background-color:#f48fb1!important}.pink4{background-color:#f06292!important}.pink5{background-color:#ec407a!important}.pink7{background-color:#d81b60!important}.pink8{background-color:#c2185b!important}.pink9{background-color:#ad1457!important}.pink10{background-color:#880e4f!important}.purple,.purple6{background-color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-text{color:#9c27b0!important}.purple1{background-color:#f3e5f5!important}.purple2{background-color:#e1bee7!important}.purple3{background-color:#ce93d8!important}.purple4{background-color:#ba68c8!important}.purple5{background-color:#ab47bc!important}.purple7{background-color:#8e24aa!important}.purple8{background-color:#7b1fa2!important}.purple9{background-color:#6a1b9a!important}.purple10{background-color:#4a148c!important}.deep-purple,.deep-purple6{background-color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-text{color:#673ab7!important}.deep-purple1{background-color:#ede7f6!important}.deep-purple2{background-color:#d1c4e9!important}.deep-purple3{background-color:#b39ddb!important}.deep-purple4{background-color:#9575cd!important}.deep-purple5{background-color:#7e57c2!important}.deep-purple7{background-color:#5e35b1!important}.deep-purple8{background-color:#512da8!important}.deep-purple9{background-color:#4527a0!important}.deep-purple10{background-color:#311b92!important}.indigo,.indigo6{background-color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-text{color:#3f51b5!important}.indigo1{background-color:#e8eaf6!important}.indigo2{background-color:#c5cae9!important}.indigo3{background-color:#9fa8da!important}.indigo4{background-color:#7986cb!important}.indigo5{background-color:#5c6bc0!important}.indigo7{background-color:#3949ab!important}.indigo8{background-color:#303f9f!important}.indigo9{background-color:#283593!important}.indigo10{background-color:#1a237e!important}.blue,.blue6{background-color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-text{color:#2196f3!important}.blue1{background-color:#e3f2fd!important}.blue2{background-color:#bbdefb!important}.blue3{background-color:#90caf9!important}.blue4{background-color:#64b5f6!important}.blue5{background-color:#42a5f5!important}.blue7{background-color:#1e88e5!important}.blue8{background-color:#1976d2!important}.blue9{background-color:#1565c0!important}.blue10{background-color:#0d47a1!important}.light-blue,.light-blue6{background-color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-text{color:#03a9f4!important}.light-blue1{background-color:#e1f5fe!important}.light-blue2{background-color:#b3e5fc!important}.light-blue3{background-color:#81d4fa!important}.light-blue4{background-color:#4fc3f7!important}.light-blue5{background-color:#29b6f6!important}.light-blue7{background-color:#039be5!important}.light-blue8{background-color:#0288d1!important}.light-blue9{background-color:#0277bd!important}.light-blue10{background-color:#01579b!important}.cyan,.cyan6{background-color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-text{color:#00bcd4!important}.cyan1{background-color:#e0f7fa!important}.cyan2{background-color:#b2ebf2!important}.cyan3{background-color:#80deea!important}.cyan4{background-color:#4dd0e1!important}.cyan5{background-color:#26c6da!important}.cyan7{background-color:#00acc1!important}.cyan8{background-color:#0097a7!important}.cyan9{background-color:#00838f!important}.cyan10{background-color:#006064!important}.teal,.teal6{background-color:#009688!important}.teal-border{border-color:#009688!important}.teal-text{color:#009688!important}.teal1{background-color:#e0f2f1!important}.teal2{background-color:#b2dfdb!important}.teal3{background-color:#80cbc4!important}.teal4{background-color:#4db6ac!important}.teal5{background-color:#26a69a!important}.teal7{background-color:#00897b!important}.teal8{background-color:#00796b!important}.teal9{background-color:#00695c!important}.teal10{background-color:#004d40!important}.green,.green6{background-color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-text{color:#4caf50!important}.green1{background-color:#e8f5e9!important}.green2{background-color:#c8e6c9!important}.green3{background-color:#a5d6a7!important}.green4{background-color:#81c784!important}.green5{background-color:#66bb6a!important}.green7{background-color:#43a047!important}.green8{background-color:#388e3c!important}.green9{background-color:#2e7d32!important}.green10{background-color:#1b5e20!important}.light-green,.light-green6{background-color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-text{color:#8bc34a!important}.light-green1{background-color:#f1f8e9!important}.light-green2{background-color:#dcedc8!important}.light-green3{background-color:#c5e1a5!important}.light-green4{background-color:#aed581!important}.light-green5{background-color:#9ccc65!important}.light-green7{background-color:#7cb342!important}.light-green8{background-color:#689f38!important}.light-green9{background-color:#558b2f!important}.light-green10{background-color:#33691e!important}.lime,.lime6{background-color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-text{color:#cddc39!important}.lime1{background-color:#f9fbe7!important}.lime2{background-color:#f0f4c3!important}.lime3{background-color:#e6ee9c!important}.lime4{background-color:#dce775!important}.lime5{background-color:#d4e157!important}.lime7{background-color:#c0ca33!important}.lime8{background-color:#afb42b!important}.lime9{background-color:#9e9d24!important}.lime10{background-color:#827717!important}.yellow,.yellow6{background-color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-text{color:#ffeb3b!important}.yellow1{background-color:#fffde7!important}.yellow2{background-color:#fff9c4!important}.yellow3{background-color:#fff59d!important}.yellow4{background-color:#fff176!important}.yellow5{background-color:#ffee58!important}.yellow7{background-color:#fdd835!important}.yellow8{background-color:#fbc02d!important}.yellow9{background-color:#f9a825!important}.yellow10{background-color:#f57f17!important}.amber,.amber6{background-color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-text{color:#ffc107!important}.amber1{background-color:#fff8e1!important}.amber2{background-color:#ffecb3!important}.amber3{background-color:#ffe082!important}.amber4{background-color:#ffd54f!important}.amber5{background-color:#ffca28!important}.amber7{background-color:#ffb300!important}.amber8{background-color:#ffa000!important}.amber9{background-color:#ff8f00!important}.amber10{background-color:#ff6f00!important}.orange,.orange6{background-color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-text{color:#ff9800!important}.orange1{background-color:#fff3e0!important}.orange2{background-color:#ffe0b2!important}.orange3{background-color:#ffcc80!important}.orange4{background-color:#ffb74d!important}.orange5{background-color:#ffa726!important}.orange7{background-color:#fb8c00!important}.orange8{background-color:#f57c00!important}.orange9{background-color:#ef6c00!important}.orange10{background-color:#e65100!important}.deep-orange,.deep-orange6{background-color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-text{color:#ff5722!important}.deep-orange1{background-color:#fbe9e7!important}.deep-orange2{background-color:#ffccbc!important}.deep-orange3{background-color:#ffab91!important}.deep-orange4{background-color:#ff8a65!important}.deep-orange5{background-color:#ff7043!important}.deep-orange7{background-color:#f4511e!important}.deep-orange8{background-color:#e64a19!important}.deep-orange9{background-color:#d84315!important}.deep-orange10{background-color:#bf360c!important}.brown,.brown6{background-color:#795548!important}.brown-border{border-color:#795548!important}.brown-text{color:#795548!important}.brown1{background-color:#efebe9!important}.brown2{background-color:#d7ccc8!important}.brown3{background-color:#bcaaa4!important}.brown4{background-color:#a1887f!important}.brown5{background-color:#8d6e63!important}.brown7{background-color:#6d4c41!important}.brown8{background-color:#5d4037!important}.brown9{background-color:#4e342e!important}.brown10{background-color:#3e2723!important}.blue-grey,.blue-grey6{background-color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-text{color:#607d8b!important}.blue-grey1{background-color:#eceff1!important}.blue-grey2{background-color:#cfd8dc!important}.blue-grey3{background-color:#b0bec5!important}.blue-grey4{background-color:#90a4ae!important}.blue-grey5{background-color:#78909c!important}.blue-grey7{background-color:#546e7a!important}.blue-grey8{background-color:#455a64!important}.blue-grey9{background-color:#37474f!important}.blue-grey10{background-color:#263238!important}.grey,.grey6{background-color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-text{color:#9e9e9e!important}.grey1{background-color:#fafafa!important}.grey2{background-color:#f5f5f5!important}.grey3{background-color:#eee!important}.grey4{background-color:#e0e0e0!important}.grey5{background-color:#bdbdbd!important}.grey7{background-color:#757575!important}.grey8{background-color:#616161!important}.grey9{background-color:#424242!important}.grey10{background-color:#212121!important}.horizontal{display:inline-flex;flex-direction:row!important;gap:1rem;inline-size:auto!important;max-inline-size:none!important}.horizontal>*{margin-block:0!important}.vertical{display:flex;flex-direction:column!important}:is(a,button,.button,.chip).vertical{display:inline-flex;gap:.25rem;block-size:auto!important;max-block-size:none!important;padding-block:.5rem}.vertical>*{margin-inline:0!important}.no-elevate{box-shadow:none!important}.small-elevate,.elevate{box-shadow:var(--elevate1)!important}.medium-elevate{box-shadow:var(--elevate2)!important}.large-elevate{box-shadow:var(--elevate3)!important}[class*=round]{--_round: 2rem;border-radius:var(--_round)!important}.small-round{--_round: .5rem}.large-round{--_round: 3.5rem}.no-round,.square,.top-round,.bottom-round,.left-round,.right-round{border-radius:.5rem!important}.top-round{border-start-start-radius:var(--_round)!important;border-start-end-radius:var(--_round)!important}.bottom-round{border-end-end-radius:var(--_round)!important;border-end-start-radius:var(--_round)!important}.left-round{border-start-start-radius:var(--_round)!important;border-end-start-radius:var(--_round)!important}.right-round{border-start-end-radius:var(--_round)!important;border-end-end-radius:var(--_round)!important}.circle:not(.extend){border-radius:50%}:is(.circle,.square):is(button,.button,.chip){padding:0;block-size:var(--_size);inline-size:var(--_size)}:is(.circle,.square)>span{display:none}:is(.circle,.square).round{border-radius:1rem!important}.border:not(table,.field,.list,menu,article){box-sizing:border-box;border:.0625rem solid var(--outline);background-color:transparent;box-shadow:none}.no-border{border-color:transparent!important}.border:not(.extend,.circle,.square,.badge){box-sizing:content-box}[class*=margin]:not(.left-margin,.right-margin,.top-margin,.bottom-margin,.horizontal-margin,.vertical-margin){margin:var(--_margin)!important}[class*=margin]{--_margin: 1rem}.no-margin{--_margin: 0}.auto-margin{--_margin: auto}.tiny-margin{--_margin: .25rem}.small-margin{--_margin: .5rem}.large-margin{--_margin: 1.5rem}.left-margin,.horizontal-margin{margin-inline-start:var(--_margin)!important}.right-margin,.horizontal-margin{margin-inline-end:var(--_margin)!important}.top-margin,.vertical-margin{margin-block-start:var(--_margin)!important}.bottom-margin,.vertical-margin{margin-block-end:var(--_margin)!important}.no-opacity{opacity:1!important}.opacity{opacity:0!important}.small-opacity{opacity:.75!important}.medium-opacity{opacity:.5!important}.large-opacity{opacity:.25!important}[class*=padding]:not(.left-padding,.right-padding,.top-padding,.bottom-padding,.horizontal-padding,.vertical-padding){padding:var(--_padding)!important}[class*=padding]{--_padding: 1rem}.no-padding{--_padding: 0 !important}.tiny-padding{--_padding: .25rem !important}.small-padding{--_padding: .5rem !important}.large-padding{--_padding: 1.5rem !important}.left-padding,.horizontal-padding{padding-inline-start:var(--_padding)!important}.right-padding,.horizontal-padding{padding-inline-end:var(--_padding)!important}.top-padding,.vertical-padding{padding-block-start:var(--_padding)!important}.bottom-padding,.vertical-padding{padding-block-end:var(--_padding)!important}.front{z-index:10!important}.back{z-index:-10!important}.left{inset-inline-start:0}.right{inset-inline-end:0}.top{inset-block-start:0}.bottom{inset-block-end:0}.center{inset-inline-start:50%;transform:translate(-50%)}[dir=rtl] .center{transform:translate(50%)}.middle{inset-block-start:50%;transform:translateY(-50%)}.middle.center{transform:translate(-50%,-50%)}[dir=rtl] .middle.center{transform:translate(50%,-50%)}.ripple{--_duration: .6s}.fast-ripple{--_duration: .2s}.slow-ripple{--_duration: 1.8s}.ripple-js{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.ripple-js>div{position:absolute;border-radius:50%;background:currentColor;opacity:.3;transform:scale(0);animation:to-ripple var(--_duration) linear}@keyframes to-ripple{to{transform:scale(4);opacity:0}}.scroll{overflow:auto}.no-scroll{overflow:hidden}.shadow{background-color:#00000050}:is(.left-shadow,.right-shadow,.top-shadow,.bottom-shadow){background-color:transparent!important}.left-shadow{background-image:linear-gradient(to right,black,transparent)!important}.right-shadow{background-image:linear-gradient(to left,black,transparent)!important}.bottom-shadow{background-image:linear-gradient(to top,black,transparent)!important}.top-shadow{background-image:linear-gradient(to bottom,black,transparent)!important}[class*=width]{max-inline-size:100%}.auto-width{inline-size:auto}.small-width{inline-size:12rem!important}.medium-width{inline-size:24rem!important}.large-width{inline-size:36rem!important}.auto-height{block-size:auto}.small-height{block-size:12rem!important}.medium-height{block-size:24rem!important}.large-height{block-size:36rem!important}.wrap{display:block;white-space:normal}.no-wrap:not(menu){display:flex;white-space:nowrap}.tiny-space:not(nav,.row,.grid,table,.tooltip,.list,menu,.shape){block-size:.5rem}:is(.space,.small-space):not(nav,.row,.grid,table,.tooltip,.list,menu,.shape){block-size:1rem}.medium-space:not(nav,.row,.grid,table,.tooltip,.list,menu,.shape){block-size:2rem}.large-space:not(nav,.row,.grid,table,.tooltip,.list,menu,.shape){block-size:3rem}.extra-space:not(nav,.row,.grid,table,.tooltip,.list,menu,.shape){block-size:4rem}.responsive{inline-size:-webkit-fill-available;inline-size:-moz-available}@media only screen and (max-width: 600px){:is(.m,.l):not(.s){display:none!important}}@media only screen and (min-width: 601px) and (max-width: 992px){:is(.s,.l):not(.m){display:none!important}}@media only screen and (min-width: 993px){:is(.m,.s):not(.l){display:none!important}}html{font-size:var(--size)}body{font-family:var(--font);font-size:.875rem;line-height:1.5rem;letter-spacing:.0313rem}h1,h2,h3,h4,h5,h6{font-weight:400;display:block;align-items:center;line-height:normal}h1{font-size:3.5625rem}h2{font-size:2.8125rem}h3{font-size:2.25rem}h4{font-size:2rem}h5{font-size:1.75rem}h6{font-size:1.5rem}h1.small{font-size:3.0625rem}h2.small{font-size:2.3125rem}h3.small{font-size:1.75rem}h4.small{font-size:1.5rem}h5.small{font-size:1.25rem}h6.small{font-size:1rem}h1.large{font-size:4.0625rem}h2.large{font-size:3.3125rem}h3.large{font-size:2.75rem}h4.large{font-size:2.5rem}h5.large{font-size:2.25rem}h6.large{font-size:2rem}.link{color:var(--primary)!important}.inverse-link{color:var(--inverse-primary)!important}.truncate{overflow:hidden;white-space:nowrap!important;text-overflow:ellipsis;flex:inherit}.truncate>*{white-space:nowrap!important}.small-text{font-size:.75rem}.medium-text{font-size:.875rem}.large-text{font-size:1rem}.upper{text-transform:uppercase}.lower{text-transform:lowercase}.capitalize{text-transform:capitalize}.bold{font-weight:700}.overline{text-decoration:line-through}.underline{text-decoration:underline}.italic{font-style:italic}p{margin:.5rem 0}.no-line{line-height:normal}.tiny-line{line-height:1.25rem}.small-line{line-height:1.5rem}.medium-line{line-height:1.75rem}.large-line{line-height:2rem}.extra-line{line-height:2.25rem}pre{border-radius:0;background-color:var(--surface-container);white-space:pre-wrap;padding:1rem;border-inline-start:.25rem solid var(--primary);font-family:inherit}blockquote{border-radius:0;padding:1rem;border-inline-start:.25rem solid var(--primary);font-family:inherit}code{border-radius:0;background-color:var(--surface-container);white-space:pre-wrap;padding:.25rem}pre>code,blockquote>code{padding:0}.scroll>code{white-space:pre}pre:has(>code){direction:ltr;text-align:start}:is(.wave,.chip,.button,button,nav.tabbed>a,.tabs>a,nav.toolbar>a):not(.slow-ripple,.ripple,.fast-ripple):after,nav:is(.left,.right,.bottom,.top).max>a:after,nav:is(.left,.right,.bottom,.top).max>:is(ol,ul)>li>a:after,nav:is(.left,.right,.bottom,.top):not(.max)>a>i:after,nav:is(.left,.right,.bottom,.top):not(.max)>:is(ol,ul)>li>a>i:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;border-radius:inherit;inline-size:100%;block-size:100%;background-position:center;background-image:radial-gradient(circle,currentColor 1%,transparent 1%);opacity:0;transition:none}:is(.wave,.chip,.button,button,nav.tabbed>a,.tabs>a,nav.toolbar>a):not(.slow-ripple,.ripple,.fast-ripple):is(:focus-visible,:hover):after,nav:is(.left,.right,.bottom,.top).max>a:not(.button,.chip):is(:focus-visible,:hover):after,nav:is(.left,.right,.bottom,.top).max>:is(ol,ul)>li>a:not(.button,.chip):is(:focus-visible,:hover):after,nav:is(.left,.right,.bottom,.top):not(.max)>a:not(.button,.chip):is(:focus-visible,:hover)>i:after,nav:is(.left,.right,.bottom,.top):not(.max)>:is(ol,ul)>li>a:not(.button,.chip):is(:focus-visible,:hover)>i:after{background-size:15000%;opacity:.1;transition:background-size var(--speed2) linear}:is(.wave,.chip,.button,button,nav.tabbed>a,.tabs>a,nav.toolbar>a,nav.max>a):not(.slow-ripple,.ripple,.fast-ripple):active:after,nav:is(.left,.right,.bottom,.top).max>a:active:after,nav:is(.left,.right,.bottom,.top).max>:is(ol,ul)>li>a:active:after,nav:is(.left,.right,.bottom,.top):not(.max)>a:active>i:after,nav:is(.left,.right,.bottom,.top):not(.max)>:is(ol,ul)>li>a:active>i:after{background-size:5000%;opacity:0;transition:none}.no-wave:after,.no-wave:is(:hover,:active):after{display:none}.zoom,.tiny-zoom{zoom:2}.small-zoom{zoom:3}.medium-zoom{zoom:4}.large-zoom{zoom:5}.extra-zoom{zoom:6}.badge{--_x: 0;--_y: -100%;display:inline-flex;align-items:center;justify-content:center;position:absolute;font-size:.6875rem;text-transform:none;z-index:2;padding:0 .25rem;min-block-size:1rem;min-inline-size:1rem;background-color:var(--error);color:var(--on-error);line-height:normal;border-radius:1rem;inset:50% auto auto 50%;transform:translate(var(--_x, 50%),var(--_y, -50%));font-family:var(--font)}.badge.top{--_y: -100%}.badge.bottom{--_y: 0}.badge.left{--_x: -100%}.badge.right{--_x: 0}.badge.border{border-color:var(--error);color:var(--error);background-color:var(--surface)}.badge:is(.circle,.square){text-align:center;inline-size:auto;block-size:auto;padding:0 .25rem;border-radius:1rem}.badge.square{border-radius:0}.badge.min>*{display:none}.badge.min{clip-path:circle(18.75% at 50% 50%)}nav:is(.left,.right,.top,.bottom)>a>.badge,nav:is(.left,.right,.top,.bottom)>:is(ol,ul)>li>a>.badge{inset:1rem auto auto 50%}.badge.none{inset:auto!important;transform:none;position:relative;margin:0 .125rem}:is(button,.button,.chip)>.badge.none{margin:0 -.5rem}header,footer{display:flex;justify-content:center;flex-direction:column;border-radius:0;padding:0 1rem}:is(dialog,article)>:is(header,footer){padding-inline:0;top:0;right:0;bottom:0;left:0}header{min-block-size:4rem}footer{min-block-size:5rem}:is(header,footer,menu>*).fixed{position:sticky;top:0;right:0;bottom:0;left:0;z-index:11;background-color:inherit}header.fixed{inset:calc(-1 * var(--_padding)) 0 0 0;margin-block-start:calc(-1 * var(--_padding))}footer.fixed{inset:0 0 calc(-1 * var(--_padding)) 0;margin-block-end:calc(-1 * var(--_padding))}:is(header,footer).fixed.min{margin-inline:auto}dialog>:is(header,footer){background:none}dialog>:is(header,footer).fixed{background-color:inherit}:is(main,header,footer,section).responsive{max-inline-size:75rem;margin:0 auto}:is(main,header,footer,section).responsive.max{max-inline-size:none}:has(>main)>:is(header,footer).fixed{transform:none;box-sizing:content-box;position:sticky;top:0;right:0;bottom:0;left:0;z-index:12}:is(nav,.row)>header{background-color:inherit}.button,button{--_padding: 1rem;--_size: 2.5rem;box-sizing:content-box;display:inline-flex;align-items:center;justify-content:center;block-size:var(--_size);font-size:.875rem;font-weight:500;color:var(--on-primary);padding:0 var(--_padding);background-color:var(--primary);margin:0 .5rem;border-radius:var(--_size);transition:transform var(--speed3),border-radius var(--speed2),padding var(--speed3);-webkit-user-select:none;user-select:none;gap:.5rem;line-height:normal}:is(button,.button).small{--_size: 2rem;--_padding: .75rem}:is(button,.button).large{--_size: 3rem;--_padding: 1.25rem}:is(.button,button):is(.extra,.extend){--_size: 3.5rem;font-size:1rem;--_padding: 1.5rem}:is(button,.button):is(.square,.circle){--_padding: 0}:is(button,.button).border{border-color:var(--outline-variant);color:var(--primary)}.extend>span{display:none}.extend:is(:hover,.active){inline-size:auto;--_padding: 1.5rem;padding:0 var(--_padding)}.extend:is(:hover,.active)>i+span{display:inherit;margin-inline-start:var(--_padding)}.extend:is(:hover,.active)>:is(img,svg)+span{display:inherit;margin-inline-start:calc(1rem + var(--_padding))}:is(.button,button)[disabled]{opacity:.5;cursor:not-allowed}.button[disabled]{pointer-events:none}:is(.button,button)[disabled]:before,:is(.button,button)[disabled]:after{display:none}:is(.button,button):not(.chip,.extend).fill{background-color:var(--secondary-container)!important;color:var(--on-secondary-container)!important}:is(.button,button):not(.chip,.extend).active{background-color:var(--primary-container);color:var(--on-primary-container)}:is(.button,button):not(.chip,.extend).fill.active{background-color:var(--secondary)!important;color:var(--on-secondary)!important}:is(.button,button):not(.chip,.extend).border.active{background-color:var(--inverse-surface)!important;color:var(--inverse-on-surface)!important;border-color:var(--inverse-surface)!important}:is(.button,button):not(.chip):active,:is(.button,button):not(.chip).active{border-radius:.5rem!important}article{--_padding: 1rem;box-shadow:var(--elevate1);background-color:var(--surface-container-low);color:var(--on-surface);padding:var(--_padding);border-radius:.75rem;display:block;transition:transform var(--speed3),border-radius var(--speed3),padding var(--speed3)}article.small{block-size:12rem}article.medium{block-size:20rem}article.large{block-size:32rem}article.border{box-shadow:none;border:.0625rem solid var(--outline-variant)}.chip{--_padding: .75rem;--_size: 2rem;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;block-size:var(--_size);min-inline-size:var(--_size);font-size:.875rem;font-weight:500;background-color:transparent;border:.0625rem solid var(--outline-variant);color:var(--on-surface-variant);padding:0 var(--_padding);margin:0 .5rem;text-transform:none;border-radius:.5rem;transition:transform var(--speed3),border-radius var(--speed3),padding var(--speed3);-webkit-user-select:none;user-select:none;gap:.5rem;line-height:normal;letter-spacing:normal}.chip.medium{--_size: 2.5rem;--_padding: 1rem}.chip.large{--_padding: 1.25rem;--_size: 3rem}.chip.fill{border:none}dialog{--_padding: 1.5rem;display:block;visibility:hidden;border:none;opacity:0;position:fixed;box-shadow:var(--elevate2);color:var(--on-surface);background-color:var(--surface-container-high);padding:var(--_padding);z-index:100;inset:10% auto auto 50%;min-inline-size:20rem;max-inline-size:100%;max-block-size:80%;overflow-x:hidden;overflow-y:auto;transition:all var(--speed3),0s background-color;border-radius:1.75rem;transform:translate(-50%,-4rem);outline:none}dialog.small{inline-size:25%;block-size:25%}dialog.medium{inline-size:50%;block-size:50%}dialog.large{inline-size:75%;block-size:75%}dialog:is(.active,[open]){visibility:visible;opacity:1;transform:translate(-50%)}dialog:popover-open{visibility:visible;opacity:1;transform:translate(-50%)}dialog:is(.top,.right,.bottom,.left,.max){--_padding: 1rem}dialog:is(.top,.bottom){opacity:1;block-size:auto;inline-size:100%;min-inline-size:auto;max-block-size:100%}dialog.top{inset:0 auto auto 0;transform:translateY(-100%);border-radius:0 0 1rem 1rem;padding-block-end:var(--_padding)}dialog.bottom{inset:auto auto 0 0;transform:translateY(100%);border-radius:1rem 1rem 0 0}dialog:is(.left,.right){opacity:1;inset:0 auto auto 0;inline-size:auto;block-size:100%;max-block-size:100%;background-color:var(--surface)}[dir=rtl] dialog.right,dialog.left{inset:0 auto auto 0;border-radius:0 1rem 1rem 0;transform:translate(-100%)}[dir=rtl] dialog.left,dialog.right{inset:0 0 auto auto;border-radius:1rem 0 0 1rem;transform:translate(100%)}dialog.max{inset:0 auto auto 0;inline-size:100%;block-size:100%;max-inline-size:100%;max-block-size:100%;transform:translateY(4rem);background-color:var(--surface);border-radius:0}dialog:is(.active,[open]):is(.left,.right,.top,.bottom,.max){transform:translate(0)}dialog:popover-open:is(.left,.right,.top,.bottom,.max){transform:translate(0)}dialog.small:is(.left,.right){inline-size:20rem}dialog.medium:is(.left,.right){inline-size:32rem}dialog.large:is(.left,.right){inline-size:44rem}dialog.small:is(.top,.bottom){block-size:16rem}dialog.medium:is(.top,.bottom){block-size:24rem}dialog.large:is(.top,.bottom){block-size:32rem}hr,[class*=divider]{all:unset;inline-size:-webkit-fill-available;min-block-size:auto;block-size:.0625rem;background-color:var(--outline-variant);display:block}hr+*,[class*=divider]+*{margin:0!important}hr.medium,.medium-divider{margin:1rem 0!important}hr.large,.large-divider{margin:1.5rem 0!important}hr.small,.small-divider{margin:.5rem 0!important}li:has(>hr),li:has(>.divider){padding:0!important;align-self:normal!important;min-inline-size:auto!important;min-block-size:auto!important;inline-size:-webkit-fill-available}hr.vertical,.divider.vertical,li:has(>hr.vertical),li:has(>.divider.vertical){padding:0!important;align-self:center!important;min-inline-size:auto;min-block-size:1.5rem;inline-size:.0625rem}summary,summary:focus{list-style-type:none;cursor:pointer;outline:none}summary::-webkit-details-marker{display:none}.field{--_size: 3rem;--_start: 1.2rem;block-size:var(--_size);margin-block-end:2rem;border-radius:.25rem .25rem 0 0}.grid>*>.field{margin-block-end:1rem}.grid>*>.field+.field{margin-block-start:2rem}.grid.no-space>*>.field+.field{margin-block-start:1rem}.grid.medium-space>*>.field+.field{margin-block-start:2.5rem}.grid.large-space>*>.field+.field{margin-block-start:3rem}.field.small{--_size: 2.5rem;--_start: 1rem}.field.large{--_size: 3.5rem;--_start: 1.4rem}.field.extra{--_size: 4rem;--_start: 1.6rem}.field.border{border-radius:.25rem}.field.round.small{border-radius:1.25rem}.field.round{border-radius:1.5rem}.field.round.large{border-radius:1.75rem}.field.round.extra{border-radius:2rem}.field>:is(i,img,svg,progress,a:not(.helper,.error)){position:absolute;inset:50% auto auto auto;transform:translateY(-50%);cursor:pointer;z-index:0;inline-size:1.5rem;block-size:1.5rem}.field>:is(i,img,svg,progress,a:not(.helper,.error)),[dir=rtl] .field>:is(i,img,svg,progress,a:not(.helper,.error)):first-child{inset:50% 1rem auto auto}.field>:is(i,img,svg,progress,a:not(.helper,.error)):first-child,[dir=rtl] .field>:is(i,img,svg,progress,a:not(.helper,.error)){inset:50% auto auto 1rem}.field.invalid>i{color:var(--error)}.field>progress.circle{inset-block-start:calc(50% - .75rem)!important;border-width:.1875rem}.field>a:not(.helper,.error){z-index:10}.field>a>:is(i,img,svg,progress,a:not(.helper,.error)){inline-size:1.5rem;block-size:1.5rem}.field>:is(input,textarea,select){all:unset;position:relative;display:flex;align-items:center;box-sizing:border-box;border-radius:inherit;border:.0625rem solid transparent;padding:0 .9375rem;font-family:inherit;font-size:1rem;inline-size:100%;block-size:100%;outline:none;z-index:1;background:none;resize:none;text-align:start;cursor:text}input::-webkit-date-and-time-value{text-align:start}:is(input,select,textarea):is(:-webkit-autofill,:autofill){-webkit-background-clip:text;-webkit-text-fill-color:var(--on-surface)}.field>:is(input,textarea,select):focus{border:.125rem solid transparent;padding:0 .875rem}.field.min>textarea{overflow:hidden;position:absolute;top:0;right:0;bottom:0;left:0;max-block-size:12rem}input[type=file],input[type=color],:not(.field)>input[type^=date],:not(.field)>input[type^=time],input::-webkit-calendar-picker-indicator{opacity:0;position:absolute;top:0;right:0;bottom:0;left:0;inline-size:100%;block-size:100%;margin:0;padding:0;border:0;outline:0;z-index:2!important}input::-webkit-search-decoration,input::-webkit-search-cancel-button,input::-webkit-search-results-button,input::-webkit-search-results-decoration,input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{display:none}input[type=number]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.field.border>:is(input,textarea,select){border-color:var(--outline)}.field.border>:is(input,textarea,select):focus{border-color:var(--primary)}.field.round>:is(input,textarea,select){padding-inline:1.4376rem}.field.round>:is(input,textarea,select):focus{padding-inline:1.375rem}.field.prefix>:is(input,textarea,select){padding-inline-start:2.9375rem}.field.prefix>.slider{margin-inline-start:3.5rem}.field.prefix>:is(input,textarea,select):focus{padding-inline-start:2.875rem}.field.suffix>:is(input,textarea,select){padding-inline-end:2.9375rem}.field.suffix>.slider{margin-inline-end:3.5rem}.field.suffix>:is(input,textarea,select):focus{padding-inline-end:2.875rem}.field:not(.border,.round)>:is(input,textarea,select){border-block-end-color:var(--outline)}.field:not(.border,.round)>:is(input,textarea,select):focus{border-block-end-color:var(--primary)}.field.round:not(.border,.fill)>:is(input,textarea,select),.field.round:not(.border)>:is(input,textarea,select):focus{box-shadow:var(--elevate1)}.field.round:not(.border,.fill)>:is(input,textarea,select):focus{box-shadow:var(--elevate2)}.field.invalid:not(.border,.round)>:is(input,textarea,select),.field.invalid:not(.border,.round)>:is(input,textarea,select):focus{border-block-end-color:var(--error)}.field.invalid.border>:is(input,textarea,select),.field.invalid.border>:is(input,textarea,select):focus{border-color:var(--error)}.field:has(>:disabled){opacity:.5;cursor:not-allowed}.field>:disabled{cursor:not-allowed}.field.textarea.small:not(.min){--_size: 5rem}.field.textarea:not(.min){--_size: 5.5rem}.field.textarea.large:not(.min){--_size: 6rem}.field.textarea.extra:not(.min){--_size: 6.5rem}.field>select{-webkit-user-select:none;user-select:none}.field>select>option{background-color:var(--surface-container);color:var(--on-surface)}.field.label>:is(input,select){padding-block-start:1rem}.field.label.border:not(.fill)>:is(input,select){padding-block-start:0}.field>textarea{padding-block-start:var(--_start);white-space:pre-wrap;overflow-wrap:break-word}.field>textarea:focus{padding-block-start:calc(var(--_start) - .06rem)}.field:not(.label)>textarea,.field.border.label:not(.fill)>textarea{padding-block-start:calc(var(--_start) - .5rem)}.field:not(.label)>textarea:focus,.field.border.label:not(.fill)>textarea:focus{padding-block-start:calc(var(--_start) - .56rem)}.field.label>label{position:absolute;inset:-.5rem auto auto 1rem;display:flex;inline-size:calc(100% - 5rem);block-size:calc(var(--_size) + 1rem);line-height:calc(var(--_size) + 1rem);font-size:1rem;transition:all .2s;gap:.25rem;white-space:nowrap}.field.label.textarea:not(.min)>label{block-size:calc(var(--_size) - 1.5rem);line-height:calc(var(--_size) - 1.5rem)}[dir=rtl] .field.label>label{inset:-.5rem 1rem auto auto}.field.label.border.prefix:not(.fill)>:is(label.active,:focus+label,[placeholder]:not(:placeholder-shown)+label,select+label){inset-inline-start:1rem}.field.label.round>label,.field.label.border.prefix.round:not(.fill)>:is(label.active,:focus+label,[placeholder]:not(:placeholder-shown)+label,select+label){inset-inline-start:1.5rem}.field.label.prefix>label{inset-inline-start:3rem}.field.label>:is(label.active,:focus+label,[placeholder]:not(:placeholder-shown)+label,select+label){block-size:2.5rem;line-height:2.5rem;font-size:.75rem}.field.label.border:not(.fill)>:is(label.active,:focus+label,[placeholder]:not(:placeholder-shown)+label,select+label){block-size:1rem;line-height:1rem}.field.label.border:not(.fill)>label:after{content:"";display:block;margin-block-start:.5rem;border-block-start:.0625rem solid var(--outline);block-size:1rem;transition:none;flex:auto}.field.label.border:not(.fill)>:focus+label:after{border-block-start:.125rem solid var(--primary)}.field.label.border:not(.fill)>:is(input,textarea):is(:focus,[placeholder]:not(:placeholder-shown),.active),.field.label.border:not(.fill)>select{clip-path:polygon(-2% -2%,.75rem -2%,.75rem .5rem,calc(100% - 5rem) .5rem,calc(100% - 5rem) -2%,102% -2%,102% 102%,-2% 102%)}[dir=rtl] .field.label.border:not(.fill)>:is(input,textarea):is(:focus,[placeholder]:not(:placeholder-shown),.active),[dir=rtl] .field.label.border:not(.fill)>select{clip-path:polygon(-2% -2%,5rem -2%,5rem .5rem,calc(100% - .75rem) .5rem,calc(100% - .75rem) -2%,102% -2%,102% 102%,-2% 102%)}.field.label.border.round:not(.fill)>:is(input,textarea):is(:focus,[placeholder]:not(:placeholder-shown),.active),.field.label.border.round:not(.fill)>select{clip-path:polygon(-2% -2%,1.25rem -2%,1.25rem .5rem,calc(100% - 5rem) .5rem,calc(100% - 5rem) -2%,102% -2%,102% 102%,-2% 102%)}[dir=rtl] .field.label.border.round:not(.fill)>:is(input,textarea):is(:focus,[placeholder]:not(:placeholder-shown),.active),[dir=rtl] .field.label.border.round:not(.fill)>select{clip-path:polygon(-2% -2%,5rem -2%,5rem .5rem,calc(100% - 1.25rem) .5rem,calc(100% - 1.25rem) -2%,102% -2%,102% 102%,-2% 102%)}.field.label>:focus+label{color:var(--primary)}.field.label.invalid>label,.field.label.invalid>label:after{color:var(--error)!important;border-color:var(--error)!important}.field.label>label>a{block-size:inherit;line-height:inherit;inline-size:1rem}.field.label>label>a>:is(i,img,svg){block-size:1rem;line-height:1rem;inline-size:1rem;font-size:1rem}.field>:is(.helper,.error){position:absolute;inset:auto auto 0 1rem;transform:translateY(100%);font-size:.75rem;background:none!important;padding-block-start:.125rem}[dir=rtl] .field>:is(.helper,.error){inset:auto 1rem 0 auto}a.helper{color:var(--primary)}.field>.error{color:var(--error)!important}.field.round>:is(.helper,.error){inset-inline-start:1.5rem}.field.invalid>.helper{display:none}table td>.field{margin:0}fieldset{border-radius:.25rem;padding:1rem;border:.0625rem solid var(--outline-variant)}fieldset>legend{margin:0 -.25rem;padding:0 .25rem}fieldset>legend+*{margin-block-start:0!important}.grid{--_gap: 1rem;display:grid;grid-template-columns:repeat(12,1fr);gap:var(--_gap);block-size:auto}.grid.no-space{--_gap: 0rem}.grid.medium-space{--_gap: 1.5rem}.grid.large-space{--_gap: 2rem}.grid>*{margin:0}.s1{grid-area:auto/span 1}.s2{grid-area:auto/span 2}.s3{grid-area:auto/span 3}.s4{grid-area:auto/span 4}.s5{grid-area:auto/span 5}.s6{grid-area:auto/span 6}.s7{grid-area:auto/span 7}.s8{grid-area:auto/span 8}.s9{grid-area:auto/span 9}.s10{grid-area:auto/span 10}.s11{grid-area:auto/span 11}.s12{grid-area:auto/span 12}@media only screen and (min-width: 601px){.m1{grid-area:auto/span 1}.m2{grid-area:auto/span 2}.m3{grid-area:auto/span 3}.m4{grid-area:auto/span 4}.m5{grid-area:auto/span 5}.m6{grid-area:auto/span 6}.m7{grid-area:auto/span 7}.m8{grid-area:auto/span 8}.m9{grid-area:auto/span 9}.m10{grid-area:auto/span 10}.m11{grid-area:auto/span 11}.m12{grid-area:auto/span 12}}@media only screen and (min-width: 993px){.l1{grid-area:auto/span 1}.l2{grid-area:auto/span 2}.l3{grid-area:auto/span 3}.l4{grid-area:auto/span 4}.l5{grid-area:auto/span 5}.l6{grid-area:auto/span 6}.l7{grid-area:auto/span 7}.l8{grid-area:auto/span 8}.l9{grid-area:auto/span 9}.l10{grid-area:auto/span 10}.l11{grid-area:auto/span 11}.l12{grid-area:auto/span 12}}i,:is(.checkbox,.radio,.switch)>span:before,:is(.checkbox,.radio,.switch)>span>i{--_size: 1.5rem;font-family:var(--font-icon);font-weight:400;font-style:normal;font-size:var(--_size);letter-spacing:normal;text-transform:none;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;word-wrap:normal;direction:ltr;font-feature-settings:"liga";-webkit-font-smoothing:antialiased;vertical-align:middle;text-align:center;overflow:hidden;inline-size:var(--_size);min-inline-size:var(--_size);block-size:var(--_size);min-block-size:var(--_size);box-sizing:content-box;line-height:normal;border-radius:0}i:has(.badge){overflow:unset}i.tiny{--_size: 1rem}.chip>i,i.small{--_size: 1.25rem}i.medium{--_size: 1.5rem}i.large{--_size: 1.75rem}i.extra{--_size: 2rem}i.fill,a.active>i,button.active>i{font-variation-settings:"FILL" 1}i>:is(img,svg){inline-size:100%;block-size:100%;background-size:100%;border-radius:inherit;position:absolute;inset:0 auto auto 0;padding:inherit}i[class*=fa-]{font-size:calc(var(--_size) * .85);line-height:normal;block-size:auto;min-block-size:auto}.absolute{position:absolute}.fixed{position:fixed}:is(.absolute,.fixed).left.right{inline-size:auto}:is(.absolute,.fixed).left.right.small{block-size:20rem}:is(.absolute,.fixed).left.right.medium{block-size:28rem}:is(.absolute,.fixed).left.right.large{block-size:44rem}:is(.absolute,.fixed).top.bottom.small{inline-size:20rem}:is(.absolute,.fixed).top.bottom.medium{inline-size:28rem}:is(.absolute,.fixed).top.bottom.large{inline-size:44rem}.list{display:flex;flex-direction:column;padding:0;margin:0;flex:1}.list>li,.list>li>details>summary,.list>li>a:only-child{all:unset;box-sizing:border-box;position:relative;display:flex;align-items:center;align-self:normal;text-align:start;justify-content:flex-start;white-space:nowrap;gap:1rem;min-block-size:3.5rem;padding:.5rem 1rem;cursor:pointer;flex:1}.list>li:has(ul,ol,details[open],a:only-child){padding:0}.list>li>.list{padding:0 0 0 1rem}.list>li>*,.list>li>a:only-child>*,.list>li>details>summary>*{margin:0}.list>li>:is(details,.max),.list>li>a:only-child>.max,.list>li>details>summary>.max{flex:1}.list.border>li:not(:last-child):before,.list.border>li>details[open]>summary:before{content:"";position:absolute;background-color:var(--outline-variant);inset:auto 0 0 0;block-size:.0625rem;inline-size:auto}.list.no-space>li,.list.no-space>li>details>summary{min-block-size:2.5rem}.list.medium-space>li,.list.medium-space>li>details>summary{min-block-size:4.5rem}.list.large-space>li,.list.large-space>li>details>summary{min-block-size:5.5rem}:has(>main){display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto 1fr auto auto;grid-template-areas:"left top right" "left header right" "left main right" "left footer right" "left bottom right";min-block-size:100dvh;box-sizing:border-box;background-color:var(--surface)}nav.left{grid-area:left}nav.right{grid-area:right}nav.top{grid-area:top;position:sticky;top:0;right:0;bottom:0;left:0;block-size:4rem}nav.bottom{grid-area:bottom;position:sticky;top:0;right:0;bottom:0;left:0;block-size:4rem}header{grid-area:header}main{grid-area:main;padding:.5rem;overflow:hidden}footer{grid-area:footer}aside{z-index:1}aside:not(.fixed,.absolute).right{float:right}aside:not(.fixed,.absolute).left{float:left}svg{fill:currentcolor}:is(img,svg,video):is(.small,.medium,.large,.tiny,.extra,.round,.circle,.square,.responsive){--_size: 3rem;object-fit:cover;object-position:center;transition:transform var(--speed3),border-radius var(--speed3),padding var(--speed3);block-size:var(--_size);inline-size:var(--_size)}:is(img,svg,video).round{--_round: .5rem}:is(img,svg,video).tiny{--_size: 2rem}:is(img,svg,video).small{--_size: 2.5rem}:is(img,svg,video).large{--_size: 3.5rem}:is(img,svg,video).extra{--_size: 4rem}:is(img,svg,video).responsive{--_size: 100%;margin:0 auto}:is(img,svg,video).responsive.tiny{inline-size:100%;block-size:4rem}:is(img,svg,video).responsive.small{inline-size:100%;block-size:8rem}:is(img,svg,video).responsive.medium{inline-size:100%;block-size:12rem}:is(img,svg,video).responsive.large{inline-size:100%;block-size:16rem}:is(img,svg,video).responsive.extra{inline-size:100%;block-size:20rem}:is(img,svg,video).responsive.round{--_round: 2rem}:is(img,svg,video).empty-state{max-inline-size:100%;inline-size:24rem}:is(button,.button,.chip):not(.transparent)>.responsive{border:.25rem solid transparent}:is(button,.button,.chip,.field)>:is(img,svg):not(.responsive),.tabs :is(img,svg):not(.responsive){min-inline-size:1.5rem;max-inline-size:1.5rem;min-block-size:1.5rem;max-block-size:1.5rem}:is(button,.button,.chip):not(.extend)>.responsive:first-child{margin-inline-start:calc(-1 * var(--_padding))}:is(button,.button,.chip):not(.extend)>.responsive:not(:first-child){margin-inline-end:calc(-1 * var(--_padding))}:is(button,.button,.chip,.circle,.square,.extend)>.responsive{--_size: inherit;margin:0 auto}.extend>:is(.responsive,i){margin:0;position:absolute;inset-inline:1rem;z-index:1}.extend>.responsive{inset-inline:0;inline-size:3.5rem}.extend.border>.responsive{inline-size:3.375rem}menu{opacity:0;visibility:hidden;position:absolute;box-shadow:var(--elevate2);background-color:var(--surface-container);z-index:11;inset:auto auto 0 0;inline-size:100%;max-block-size:50vh;max-inline-size:none!important;overflow-x:hidden;overflow-y:auto;font-size:.875rem;font-weight:400;text-transform:none;color:var(--on-surface);line-height:normal;text-align:start;border-radius:.25rem;transform:scale(.8) translateY(120%);transition:all var(--speed2),0s background-color;justify-content:flex-start}[dir=rtl] menu{inset:auto 0 0 auto}menu.no-wrap{inline-size:max-content;white-space:nowrap!important}menu.active,:not(menu,[data-ui]):focus-within>menu,menu>li:hover>menu,menu>li>menu:hover{opacity:1;visibility:visible;transform:scale(1) translateY(100%)}menu.active.top,:not(menu,[data-ui]):focus-within>menu.top,menu>li:hover>menu.top,menu>li>menu.top:hover{transform:scale(1) translateY(-100%)}menu *{white-space:inherit!important}menu>li,menu>li>a:only-child{all:unset;box-sizing:border-box;position:relative;display:flex;align-items:center;align-self:normal;text-align:start;justify-content:inherit;white-space:nowrap;gap:1rem;padding:.5rem 1rem;min-block-size:3rem;flex:1;margin:0!important;cursor:pointer}menu>li:is(:hover,:focus,.active){background-color:var(--active)}menu>li>:is(.max,.field),menu>li>a:only-child>.max,menu>li:has(.field,a:only-child){flex:1;padding:0;margin:0}menu.min{inset:0 0 auto 0;transform:none!important;background-color:var(--surface-variant)!important;color:var(--on-surface-variant)!important}[dir=rtl] menu.min.right,menu.min.left,menu.top.left{inset:0 0 auto auto}[dir=rtl] menu.min.left,menu.min.right,menu.top,menu.top.right{inset:0 auto auto 0}menu.max{position:fixed;top:0;right:0;bottom:0;left:0;block-size:100%;max-block-size:none;min-block-size:auto;z-index:100;transform:none!important;background-color:var(--surface-variant)!important;color:var(--on-surface-variant)!important;border-radius:0}menu.no-wrap:is(.min,.max){min-inline-size:16rem}[dir=rtl] menu.right,[dir=rtl] menu.top.min.right,menu.left,menu.top.min.left{inset:auto 0 0 auto}[dir=rtl] menu.left,[dir=rtl] menu.top.min.left,menu.right,menu.top.min{inset:auto auto 0 0}menu.top{transform:scale(.8) translateY(-120%)}menu:has(menu){--_child: 1;--_type: 0;overflow:unset;white-space:nowrap;inline-size:auto;min-inline-size:12rem;max-block-size:none}menu>li>:is(menu,menu.right),[dir=rtl] menu>li>menu.left{inset:auto auto calc(3rem * (var(--_child) - var(--_type))) 100%}[dir=rtl] menu>li>:is(menu,menu.right),menu>li>menu.left{inset:auto 100% calc(3rem * (var(--_child) - var(--_type))) auto}menu>li>:is(menu.top,menu.top.right),[dir=rtl] menu>li>menu.top.left{inset:calc(3rem * (var(--_child) - var(--_type))) auto auto 100%}[dir=rtl] menu>li>:is(menu.top,menu.top.right),menu>li>menu.top.left{inset:calc(3rem * (var(--_child) - var(--_type))) 100% auto auto}menu.no-space>li{min-block-size:2.5rem}menu.medium-space>li{min-block-size:3.5rem}menu.large-space>li{min-block-size:4rem}menu.border>li:not(:last-child):before{content:"";position:absolute;background-color:var(--outline-variant);inset:auto 0 0 0;block-size:.0625rem;inline-size:auto}menu.transparent{margin:0 -1rem!important;padding:.5rem}menu.transparent>li{background-color:inherit;box-shadow:none;padding:0}menu>li:nth-last-child(2){--_child: 2}menu>li:nth-last-child(3){--_child: 3}menu>li:nth-last-child(4){--_child: 4}menu>li:nth-last-child(5){--_child: 5}menu>li:nth-last-child(6){--_child: 6}menu>li:nth-last-child(7){--_child: 7}menu>li:nth-last-child(8){--_child: 8}menu>li:nth-last-child(9){--_child: 9}menu>li:nth-last-child(10){--_child: 10}menu>li:nth-last-child(11){--_child: 11}menu>li:nth-last-of-type(2){--_type: 1}menu>li:nth-last-of-type(3){--_type: 2}menu>li:nth-last-of-type(4){--_type: 3}menu>li:nth-last-of-type(5){--_type: 4}menu>li:nth-last-of-type(6){--_type: 5}menu>li:nth-last-of-type(7){--_type: 6}menu>li:nth-last-of-type(8){--_type: 7}menu>li:nth-last-of-type(9){--_type: 8}menu>li:nth-last-of-type(10){--_type: 9}menu>li:nth-last-of-type(11){--_type: 10}nav>:is(ol,ul),nav>:is(ol,ul)>li{all:unset}nav,.row,a.row{display:flex;align-items:center;align-self:normal;text-align:start;justify-content:flex-start;white-space:nowrap;gap:1rem;border-radius:0}a.row,nav.row{min-block-size:3rem;margin:0}:is(nav,.row,.max)>:only-child,nav>:is(ol,ul)>li>:only-child{margin:0}:is(nav,.row)>:not(ul,ol,header,footer){margin:0;white-space:normal;flex:none}:is(nav,.row).min{display:inline-flex}:is(nav,.row,li).no-space{gap:0}:is(nav,.row,li).tiny-space{gap:.5rem}:is(nav,.row,li).medium-space{gap:1.5rem}:is(nav,.row,li).large-space{gap:2rem}:is(nav,.row)>.max,:is(nav,.row)>:is(ol,ul)>.max{flex:1}:is(nav,.row).wrap{display:flex;flex-wrap:wrap}:is(header,footer)>:is(nav,.row){min-block-size:inherit}nav:is(.left,.right,.top,.bottom){position:sticky;top:0;right:0;bottom:0;left:0;border:0;color:var(--on-surface);transform:none;z-index:100;text-align:center;padding:.5rem;margin:0}nav:is(.left,.right){justify-content:flex-start;flex-direction:column;background-color:var(--surface);block-size:100dvh;min-inline-size:6rem}nav:is(.top,.bottom){padding:.5rem;justify-content:center;flex-direction:row;background-color:var(--surface-container);block-size:auto;min-block-size:4.5rem}nav>header{min-block-size:auto;padding:0;margin:0 0 1rem;align-items:flex-start;gap:1rem;background:none!important}nav:is(.top,.bottom)>header{flex-direction:row;align-items:center;margin:0 1rem 0 0}nav>header>*{margin:0}nav>header>.extend:hover{--_padding: 0;inline-size:var(--_size)}nav>header>.extend:hover>span{display:none}nav>:is(ol,ul){all:inherit;min-inline-size:auto;margin:0;padding:0;flex:auto}nav.max:is(.left,.right,.top,.bottom){gap:0;inline-size:auto;align-items:flex-start;min-inline-size:12.75rem;padding:.5rem 1.25rem}nav.max>:is(ol,ul){padding:0}nav.max>header{margin:0 0 1.25rem}nav.max:is(.top,.bottom)>header{margin:0 1.25rem 0 0}nav.max>header>.extend{--_padding: 1.5rem;inline-size:auto;padding:0 var(--_padding)}nav.max>header>.extend>span{display:block;margin-inline-start:var(--_padding)}nav.max>header>.extend>:is(img,svg)+span{margin-inline-start:calc(1rem + var(--_padding))}nav.max:is(.top,.bottom){padding:0 .5rem;align-items:center;min-inline-size:auto;max-inline-size:none}nav:is(.left,.right,.top,.bottom)>a:not(.button,.chip),nav:is(.left,.right,.top,.bottom)>:is(ol,ul)>li>a:not(.button,.chip){display:flex;flex-direction:column;gap:.25rem;line-height:normal;inline-size:3.5rem;font-size:.8rem}nav:not(.max):is(.left,.right,.top,.bottom)>a:not(.button,.chip)>i,nav:not(.max):is(.left,.right,.top,.bottom)>:is(ol,ul)>li>a:not(.button,.chip)>i{padding:.25rem 1rem;border-radius:2rem;transition:padding var(--speed1) linear;margin:0 auto}nav.max:is(.left,.right,.top,.bottom)>a:not(.button,.chip),nav.max:is(.left,.right,.top,.bottom)>:is(ol,ul)>li>a:not(.button,.chip){flex-direction:row;gap:.5rem;inline-size:auto;block-size:3.5rem;padding:0 1rem;border-radius:2rem;font-size:inherit}nav.max:is(.top,.bottom)>a:not(.button,.chip),nav.max:is(.top,.bottom)>:is(ol,ul)>li>a:not(.button,.chip){gap:.25rem;block-size:2.5rem;font-size:.8rem}nav.max:is(.left,.right,.top,.bottom)>a.active:not(.button,.chip),nav.max:is(.left,.right,.top,.bottom)>:is(ol,ul)>li>a.active:not(.button,.chip),nav:is(.left,.right,.top,.bottom):not(.max)>a.active:not(.button,.chip)>i,nav:is(.left,.right,.top,.bottom):not(.max)>:is(ol,ul)>li>a.active:not(.button,.chip)>i{background-color:var(--secondary-container);color:var(--on-secondary-container)}:is(nav,.row):is(.left-align,.top-align,.vertical){justify-content:flex-start}:is(nav,.row):is(.right-align,.bottom-align){justify-content:flex-end}:is(nav,.row):is(.center-align,.middle-align){justify-content:center}:is(nav,.row):is(.left-align,.top-align,.vertical).vertical{align-items:flex-start}:is(nav,.row):is(.right-align,.bottom-align).vertical{align-items:flex-end}:is(nav,.row):is(.center-align,.middle-align).vertical{align-items:center}nav:not(.left,.right)>.space{inline-size:.5rem}nav:not(.left,.right)>.medium-space{inline-size:1rem}nav:not(.left,.right)>.large-space{inline-size:1.5rem}nav.tabbed{background-color:var(--surface-container);border-radius:4rem!important;gap:0rem;block-size:4rem}nav.tabbed.small{block-size:3rem}nav.tabbed.large{block-size:5rem}nav.tabbed>a{border-radius:inherit;block-size:inherit;display:inline-flex;align-items:center;padding-inline:1rem;gap:.5rem;font-size:1rem;flex:1}nav.tabbed>a.active{background-color:var(--primary-container)}nav.toolbar{display:inline-flex;justify-content:space-around;border-radius:2rem;background-color:var(--surface-container);color:var(--on-surface);padding:0 1rem;gap:.5rem;min-block-size:4rem;min-inline-size:4rem}nav.toolbar>a{display:inline-flex;gap:.5rem;min-inline-size:2.5rem;min-block-size:2.5rem;border-radius:1.75rem}nav.toolbar>a:has(>:not(i)){padding:0 1rem}nav.toolbar>a.active{background-color:var(--secondary-container);color:var(--on-secondary-container)}nav.toolbar.fill{background-color:var(--primary-container)!important;color:var(--on-primary-container)!important}nav.toolbar.fill>a.active{background-color:var(--surface-container)!important;color:var(--on-surface)!important}nav.toolbar.vertical{flex-direction:column!important;min-inline-size:4rem;padding:1rem 0;align-self:center;align-items:center!important}nav.toolbar.vertical>a{inline-size:2.5rem;block-size:2.5rem}nav.toolbar.vertical>a>:is(div,span):not(.badge,.tooltip){display:none}nav.toolbar.max{border-radius:0;display:flex}nav.group{background:none!important}nav.group:is(.connected,.split){gap:.125rem}nav.group:not(.split)>:is(.button,button):not(.border){background-color:var(--surface-container);color:var(--on-surface-container)}nav.group:not(.split)>:is(.button,button).active{background-color:var(--primary);color:var(--on-primary)}nav.group.connected>:is(.button,button):not(.border){background-color:var(--surface-container);color:var(--on-surface-container)}nav.group.connected>:is(.button,button).active{background-color:var(--secondary-container);color:var(--on-secondary-container)}nav.group:is(.connected,.split)>:is(.button,button).active,nav.split>:is(.button,button):active{border-radius:2rem!important}:not(nav)>:is(ul,ol){all:revert}:is(.scroll,.no-scroll,.no-space,.tabs,.tabbed)>:focus-visible{outline:.125rem solid var(--primary);outline-offset:-.125rem}nav.split>:is(.button,button):not(.chip,.fill,.border){background-color:var(--primary);color:var(--on-primary)}nav.group.primary-container>button,nav:is(.max,.toolbar,.tabbed,.group).primary>:is(button,a).active,nav:not(.max,.toolbar,.tabbed,.group).primary>a.active:not(.button,.chip)>i{background-color:var(--primary-container)!important;color:var(--on-primary-container)!important}nav.group.primary>button,nav:is(.max,.toolbar,.tabbed,.group).primary-container>:is(button,a).active,nav:not(.max,.toolbar,.tabbed,.group).primary-container>a.active:not(.button,.chip)>i{background-color:var(--primary)!important;color:var(--on-primary)!important}nav.group.secondary-container>button,nav:is(.max,.toolbar,.tabbed,.group).secondary>:is(button,a).active,nav:not(.max,.toolbar,.tabbed,.group).secondary>a.active:not(.button,.chip)>i{background-color:var(--secondary-container)!important;color:var(--on-secondary-container)!important}nav.group.secondary>button,nav:is(.max,.toolbar,.tabbed,.group).secondary-container>:is(button,a).active,nav:not(.max,.toolbar,.tabbed,.group).secondary-container>a.active:not(.button,.chip)>i{background-color:var(--secondary)!important;color:var(--on-secondary)!important}nav.group.tertiary-container>button,nav:is(.max,.toolbar,.tabbed,.group).tertiary>:is(button,a).active,nav:not(.max,.toolbar,.tabbed,.group).tertiary>a.active:not(.button,.chip)>i{background-color:var(--tertiary-container)!important;color:var(--on-tertiary-container)!important}nav.group.tertiary>button,nav:is(.max,.toolbar,.tabbed,.group).tertiary-container>:is(button,a).active,nav:not(.max,.toolbar,.tabbed,.group).tertiary-container>a.active:not(.button,.chip)>i{background-color:var(--tertiary)!important;color:var(--on-tertiary)!important}@media only screen and (max-width: 600px){nav.top,nav.bottom{justify-content:space-around}}.overlay,dialog::backdrop{display:block!important;opacity:0;visibility:hidden;position:fixed;top:0;right:0;bottom:0;left:0;color:var(--on-surface);background-color:var(--overlay);z-index:100;transition:all var(--speed3),0s background-color;border-radius:0}.overlay.active{opacity:1;visibility:visible}dialog:popover-open::backdrop{opacity:1;visibility:visible}.overlay+dialog::backdrop,.snackbar::backdrop{display:none}[popover]{border:0}.page{--_transform: translate(0, 0);opacity:0;position:absolute;display:none}.page.active{opacity:1;position:inherit;display:inherit;animation:var(--speed4) to-page ease}.page.active.top{--_transform: translate(0, -4rem)}.page.active.bottom{--_transform: translate(0, 4rem)}.page.active.left{--_transform: translate(-4rem, 0)}.page.active.right{--_transform: translate(4rem, 0)}@keyframes to-page{0%{opacity:0;transform:var(--_transform)}to{opacity:1;transform:translate(0)}}progress{position:relative;inline-size:100%;block-size:.5rem;color:var(--primary);background:var(--primary-container);border-radius:1rem;flex:none;border:none;overflow:hidden;writing-mode:horizontal-tb;direction:ltr;-webkit-appearance:none}progress.small{inline-size:4rem}progress.medium{inline-size:8rem}progress.large{inline-size:12rem}progress:not(.circle,[value]):after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;inline-size:100%;block-size:100%;clip-path:none;background:currentcolor;animation:1.6s to-linear ease infinite}progress:not(.circle,[value])::-moz-progress-bar{animation:1.6s to-linear ease infinite}progress:not(.circle,[value])::-webkit-progress-value{animation:1.6s to-linear ease infinite}progress::-webkit-progress-bar{background:none}progress::-webkit-progress-value{background:currentcolor}progress::-moz-progress-bar{background:currentcolor}progress.circle{display:inline-block;inline-size:2.5rem;block-size:2.5rem;border-radius:50%;border-width:.3rem;border-style:solid;border-color:currentcolor;animation:1.6s to-circular linear infinite;background:none;flex:none}progress.circle::-moz-progress-bar{background:none}progress.circle.small{inline-size:1.5rem;block-size:1.5rem;border-width:.2rem}progress.circle.large{inline-size:3.5rem;block-size:3.5rem;border-width:.4rem}:is(nav,.row,.field)>progress:not(.circle,.small,.medium,.large){flex:auto}progress.max{display:unset;position:absolute;inline-size:100%!important;block-size:100%!important;color:var(--active);background:none;top:0;right:0;bottom:0;left:0;border-radius:inherit;animation:none;writing-mode:horizontal-tb}progress:is(.horizontal,.vertical,.max){display:unset;inline-size:100%!important}progress.vertical{writing-mode:vertical-lr}progress.max.vertical{transform:rotate(-180deg)}progress.max+*{margin-block-start:0}:is(.button,button,.chip)>progress.circle{color:inherit}@supports (-moz-appearance:none){progress.max.vertical{transform:none}}@keyframes to-linear{0%{margin-inline-start:0%;inline-size:0%}50%{margin-inline-start:0%;inline-size:100%}to{margin-inline-start:100%;inline-size:0%}}@keyframes to-circular{0%{transform:rotate(0);clip-path:polygon(50% 50%,0% 0%,50% 0%,50% 0%,50% 0%,50% 0%,50% 0%,50% 0%,50% 0%)}20%{clip-path:polygon(50% 50%,0% 0%,50% 0%,100% 0%,100% 0%,100% 0%,100% 0%,100% 0%,100% 0%)}30%{clip-path:polygon(50% 50%,0% 0%,50% 0%,100% 0%,100% 50%,100% 50%,100% 50%,100% 50%,100% 50%)}40%{clip-path:polygon(50% 50%,0% 0%,50% 0%,100% 0%,100% 50%,100% 100%,100% 100%,100% 100%,100% 100%)}50%{clip-path:polygon(50% 50%,50% 0%,50% 0%,100% 0%,100% 50%,100% 100%,50% 100%,50% 100%,50% 100%)}60%{clip-path:polygon(50% 50%,100% 50%,100% 50%,100% 50%,100% 50%,100% 100%,50% 100%,0% 100%,0% 100%)}70%{clip-path:polygon(50% 50%,50% 100%,50% 100%,50% 100%,50% 100%,50% 100%,50% 100%,0% 100%,0% 50%)}80%{clip-path:polygon(50% 50%,0% 100%,0% 100%,0% 100%,0% 100%,0% 100%,0% 100%,0% 100%,0% 50%)}90%{transform:rotate(360deg);clip-path:polygon(50% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%)}to{clip-path:polygon(50% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%)}}*:has(>.shape){overflow:hidden}.shape{display:flex;align-items:center;justify-content:center;color:var(--on-primary);background-color:var(--primary);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;border-radius:0;block-size:3.5rem;inline-size:3.5rem}.transparent>.shape>i{filter:invert(1)}.shape.tiny-space{-webkit-mask-size:90%;mask-size:90%}.shape.space,.shape.small-space{-webkit-mask-size:80%;mask-size:80%}.shape.medium-space{-webkit-mask-size:70%;mask-size:70%}.shape.large-space{-webkit-mask-size:60%;mask-size:60%}.shape.extra-space{-webkit-mask-size:50%;mask-size:50%}.shape.tiny{block-size:2.5rem;inline-size:2.5rem}.shape.medium{block-size:4.5rem;inline-size:4.5rem}.shape.large{block-size:5.5rem;inline-size:5.5rem}.shape.extra{block-size:6.5rem;inline-size:6.5rem}.shape.max,.shape>.responsive,.shape>.responsive>.responsive{position:absolute;top:0;right:0;bottom:0;left:0;block-size:100%;inline-size:100%;margin:0!important;padding:0!important;border:0!important}.shape>.responsive{background:inherit;color:inherit}.shape.rotate{animation:linear to-shape-rotate infinite 12s}.shape.rotate>*{animation:linear to-shape-rotate infinite 12s reverse}.shape.fast-rotate{animation:linear to-shape-rotate infinite 6s}.shape.fast-rotate>*{animation:linear to-shape-rotate infinite 6s reverse}.shape.slow-rotate{animation:linear to-shape-rotate infinite 24s}.shape.slow-rotate{animation:linear to-shape-rotate infinite 24s reverse}:is(button,.button,.chip):has(>.shape)>.responsive{border:none}.shape.arch{-webkit-mask-image:url(arch.svg);mask-image:url(arch.svg)}.shape.arrow{-webkit-mask-image:url(arrow.svg);mask-image:url(arrow.svg)}.shape.boom{-webkit-mask-image:url(boom.svg);mask-image:url(boom.svg)}.shape.bun{-webkit-mask-image:url(bun.svg);mask-image:url(bun.svg)}.shape.burst{-webkit-mask-image:url(burst.svg);mask-image:url(burst.svg)}.shape.circle{-webkit-mask-image:url(circle.svg);mask-image:url(circle.svg)}.shape.clamshell{-webkit-mask-image:url(clamshell.svg);mask-image:url(clamshell.svg)}.shape.diamond{-webkit-mask-image:url(diamond.svg);mask-image:url(diamond.svg)}.shape.fan{-webkit-mask-image:url(fan.svg);mask-image:url(fan.svg)}.shape.flower{-webkit-mask-image:url(flower.svg);mask-image:url(flower.svg)}.shape.gem{-webkit-mask-image:url(gem.svg);mask-image:url(gem.svg)}.shape.ghost-ish{-webkit-mask-image:url(ghost-ish.svg);mask-image:url(ghost-ish.svg)}.shape.heart{-webkit-mask-image:url(heart.svg);mask-image:url(heart.svg)}.shape.leaf-clover4{-webkit-mask-image:url(leaf-clover4.svg);mask-image:url(leaf-clover4.svg)}.shape.leaft-clover8{-webkit-mask-image:url(leaf-clover8.svg);mask-image:url(leaf-clover8.svg)}.shape.loading-indicator{-webkit-mask-image:url(loading-indicator.svg);mask-image:url(loading-indicator.svg)}.shape.oval{-webkit-mask-image:url(oval.svg);mask-image:url(oval.svg)}.shape.pentagon{-webkit-mask-image:url(pentagon.svg);mask-image:url(pentagon.svg)}.shape.pill{-webkit-mask-image:url(pill.svg);mask-image:url(pill.svg)}.shape.pixel-circle{-webkit-mask-image:url(pixel-circle.svg);mask-image:url(pixel-circle.svg)}.shape.pixel-triangle{-webkit-mask-image:url(pixel-triangle.svg);mask-image:url(pixel-triangle.svg)}.shape.puffy{-webkit-mask-image:url(puffy.svg);mask-image:url(puffy.svg)}.shape.puffy-diamond{-webkit-mask-image:url(puffy-diamond.svg);mask-image:url(puffy-diamond.svg)}.shape.semicircle{-webkit-mask-image:url(semicircle.svg);mask-image:url(semicircle.svg)}.shape.sided-cookie4{-webkit-mask-image:url(sided-cookie4.svg);mask-image:url(sided-cookie4.svg)}.shape.sided-cookie6{-webkit-mask-image:url(sided-cookie6.svg);mask-image:url(sided-cookie6.svg)}.shape.sided-cookie7{-webkit-mask-image:url(sided-cookie7.svg);mask-image:url(sided-cookie7.svg)}.shape.sided-cookie9{-webkit-mask-image:url(sided-cookie9.svg);mask-image:url(sided-cookie9.svg)}.shape.sided-cookie12{-webkit-mask-image:url(sided-cookie12.svg);mask-image:url(sided-cookie12.svg)}.shape.slanted{-webkit-mask-image:url(slanted.svg);mask-image:url(slanted.svg)}.shape.soft-boom{-webkit-mask-image:url(soft-boom.svg);mask-image:url(soft-boom.svg)}.shape.soft-burst{-webkit-mask-image:url(soft-burst.svg);mask-image:url(soft-burst.svg)}.shape.square{-webkit-mask-image:url(square.svg);mask-image:url(square.svg)}.shape.sunny{-webkit-mask-image:url(sunny.svg);mask-image:url(sunny.svg)}.shape.triangle{-webkit-mask-image:url(triangle.svg);mask-image:url(triangle.svg)}.shape.very-sunny{-webkit-mask-image:url(very-sunny.svg);mask-image:url(very-sunny.svg)}@keyframes to-shape-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.checkbox,.radio,.switch{--_size: 1.5rem;direction:ltr;inline-size:auto;block-size:auto;line-height:normal;white-space:nowrap;cursor:pointer;display:inline-flex;align-items:center}:is(.checkbox,.radio,.switch).small{--_size: 1rem}:is(.checkbox,.radio,.switch).large{--_size: 2rem}:is(.checkbox,.radio,.switch).extra{--_size: 2.5rem}:is(.checkbox,.radio)>input{inline-size:var(--_size);block-size:var(--_size);opacity:0}.switch>input{inline-size:3.25rem;block-size:2rem;opacity:0}:is(.checkbox,.radio,.switch)>span{display:inline-flex;align-items:center;color:var(--on-surface);font-size:.875rem}:is(.checkbox,.radio)>span:not(:empty){padding-inline-start:.25rem}:is(.checkbox,.radio,.switch)>span:before,:is(.checkbox,.radio,.switch)>span>i,:is(.checkbox,.radio)>span:after{--_size: inherit;content:"";inline-size:var(--_size);block-size:var(--_size);box-sizing:border-box;margin:0 auto;outline:none;color:var(--primary);position:absolute;inset:auto auto auto calc(var(--_size) * -1);border-radius:50%;-webkit-user-select:none;user-select:none;z-index:1}.switch>span:before,.switch.icon>span>i{position:absolute;inset:50% auto auto 0;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;transition:all var(--speed2);font-size:calc(var(--_size) - .5rem);-webkit-user-select:none;user-select:none;min-inline-size:var(--_size);min-block-size:var(--_size);content:"";color:var(--surface-variant);background-color:var(--outline)}.switch>span:before,.switch.icon>span>i{transform:translate(-3rem,-50%) scale(.6)}.switch.icon>span>i{transform:translate(-3rem,-50%) scale(1)}.checkbox>span:before{content:"check_box_outline_blank"}.checkbox>input:checked+span:before{content:"check_box";font-variation-settings:"FILL" 1}.checkbox>input:indeterminate+span:before{content:"indeterminate_check_box"}.radio>span:before{content:"radio_button_unchecked"}.radio>input:checked+span:before{content:"radio_button_checked"}:is(.radio,.checkbox,.switch).icon>span:before{content:""!important;font-variation-settings:unset!important}:is(.checkbox,.radio)>span:after{transition:all var(--speed1);background-color:currentColor;box-shadow:0 0 0 0 currentColor;opacity:0}:is(.checkbox,.radio):is(:hover)>input:not(:disabled)+span:after,:is(.checkbox,.radio)>input:not(:disabled):is(:focus)+span:after{box-shadow:0 0 0 .5rem currentColor;opacity:.1}.switch>input:not(:disabled):is(:focus,:hover)+span:before,.switch.icon>input:not(:disabled):is(:focus,:hover)+span>i{box-shadow:0 0 0 .5rem var(--active)}:is(.checkbox,.radio)>input:checked+span:before,:is(.checkbox,.radio).icon>input:checked+span>i{color:var(--primary)}.icon>input:checked+span>i:first-child,.icon>span>i:last-child{opacity:0}.icon>input:checked+span>i:last-child,.icon>span>i:first-child{opacity:1}.switch>input:checked+span:after{border:none;background-color:var(--primary)}.switch>input:checked+span:before,.switch.icon>input:checked+span>i{content:"check";color:var(--primary);background-color:var(--on-primary);transform:translate(-1.75rem,-50%) scale(1)}.switch>input:active:not(:disabled)+span:before,.switch.icon>input:active:not(:disabled)+span>i{transform:translate(-3rem,-50%) scale(1.2)}.switch>input:active:checked:not(:disabled)+span:before,.switch.icon>input:active:checked:not(:disabled)+span>i{transform:translate(-1.75rem,-50%) scale(1.2)}:is(.checkbox,.radio,.switch)>input:disabled+span{opacity:.5;cursor:not-allowed}.switch>span:after{content:"";position:absolute;inset:50% auto auto 0;background-color:var(--active);border:.125rem solid var(--outline);box-sizing:border-box;inline-size:3.25rem;block-size:2rem;border-radius:2rem;transform:translate(-3.25rem,-50%)}.field>:is(nav,.row){flex-grow:1;padding:0 1rem}.field.round>:is(nav,.row){flex-grow:1;padding:0 1.5rem}[dir=rtl] .switch{transform:scale(-1)}[dir=rtl] .switch>span:before,[dir=rtl] .switch.icon>span>i{transform:translate(-3rem,-50%) scale(-.6)}[dir=rtl] .switch.icon>span>i{transform:translate(-3rem,-50%) scale(-1)}[dir=rtl] .switch>input:checked+span:before,[dir=rtl] .switch.icon>input:checked+span>i{transform:translate(-1.75rem,-50%) scale(-1)}.switch>:focus-visible+span:after{outline:.125rem solid var(--primary);outline-offset:.25rem}:is(.checkbox,.radio)>:focus-visible+span:before{outline:.125rem solid var(--primary);outline-offset:.375rem}.slider{--_start: 0%;--_end: 0%;--_value1: "";--_value2: "";--_track: 1rem;--_thumb: max(2.5rem, calc(var(--_track) + .5rem));display:flex;align-items:center!important;inline-size:auto;block-size:var(--_thumb);flex:none;direction:ltr;margin:0 1.25rem}[dir=rtl] .slider{transform:scaleX(-1)}.slider.vertical{flex-direction:row!important;margin:.5rem auto!important;padding:50% 0;transform:rotate(-90deg);inline-size:100%}.slider.tiny{--_track: 1rem}.slider.small{--_track: 1.5rem}.slider.medium{--_track: 2.5rem}.slider.large{--_track: 3.5rem}.slider.extra{--_track: 6rem}.slider>input{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-shadow:none;border:none;outline:none;pointer-events:none;inline-size:100%;block-size:var(--_track);background:none;z-index:1;padding:0;margin:0;transform:rotate(0)}.slider>input:only-of-type{pointer-events:all}.slider>input+input{position:absolute}.slider>input::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-shadow:none;border:none;outline:none;pointer-events:all;block-size:var(--_thumb);inline-size:.25rem;border-radius:.25rem;background:var(--primary);cursor:grab;margin:0;z-index:1}.slider>input::-webkit-slider-thumb:active{cursor:grabbing}.slider>input::-moz-range-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-shadow:none;border:none;outline:none;pointer-events:all;block-size:2.75rem;inline-size:.25rem;border-radius:.25rem;background:var(--primary);cursor:grab;margin:0}.slider>input::-moz-range-thumb:active{cursor:grabbing}.slider>input:not(:disabled):is(:focus)::-webkit-slider-thumb{transform:scaleX(.6)}.slider>input:not(:disabled):is(:focus)::-moz-range-thumb{transform:scaleX(.6)}.slider>input:disabled{cursor:not-allowed;opacity:1}.slider>input:disabled::-webkit-slider-thumb{background:var(--outline);cursor:not-allowed}.slider>input:disabled::-moz-range-thumb{background:var(--outline);cursor:not-allowed}.slider>input:disabled~span{background:var(--outline)}.slider>span{position:absolute;block-size:var(--_track);border-radius:1rem 0 0 1rem;background:var(--primary);color:var(--on-primary);z-index:0;inset:calc(50% - (var(--_track) / 2)) var(--_end) auto var(--_start);clip-path:polygon(0 0,calc(100% - .5rem) 0,calc(100% - .5rem) 100%,0 100%)}.slider>input[type=range]+input[type=range]~span{border-radius:0;clip-path:polygon(.5rem 0,max(.5rem,calc(100% - .5rem)) 0,max(.5rem,calc(100% - .5rem)) 100%,.5rem 100%)}.field>.slider{inline-size:100%}.slider:before{content:"";position:absolute;inline-size:100%;block-size:var(--_track);border-radius:1rem;background:var(--secondary-container);clip-path:polygon(calc(var(--_start) - .5rem) 0,0 0,0 100%,calc(var(--_start) - .5rem) 100%,calc(var(--_start) - .5rem) 0,calc(100% - var(--_end) + .5rem) 0,100% 0,100% 100%,calc(100% - var(--_end) + .5rem) 100%,calc(100% - var(--_end) + .5rem) 0)}.slider:has(>[disabled]):before{background:var(--outline-variant)}.slider:has([disabled]){opacity:.62}.slider>span>i{position:absolute;block-size:auto;inset:0 auto 0 .5rem;color:currentColor;z-index:1}.slider:not(.medium,.large,.extra)>span>i{display:none}.slider.vertical>i{transform:rotate(90deg)}.slider>.tooltip{visibility:hidden!important;opacity:0!important;inset:0 auto auto calc(100% - var(--_end));border-radius:2rem;transition:top var(--speed2) ease,opacity var(--speed2) ease;transform:translate(-50%,-50%)!important;padding:.75rem 1rem}[dir=rtl] .slider>.tooltip{transform:translate(-50%,-50%) scaleX(-1)!important}.slider>.tooltip+.tooltip{inset:.25rem calc(100% - var(--_start)) auto auto;transform:translate(50%,-50%)!important}[dir=rtl] .slider>.tooltip+.tooltip{transform:translate(50%,-50%) scaleX(-1)!important}.slider>.tooltip:before{content:var(--_value1)}.slider>.tooltip+.tooltip:before{content:var(--_value2)}.slider>:focus~.tooltip{inset-block-start:-1rem!important;opacity:1!important;visibility:visible!important}.slider.vertical>.tooltip{inset-block-start:auto!important;margin-block-start:calc(-1 * var(--_thumb))!important;block-size:2.5rem;inline-size:2.5rem;transform:rotate(90deg) translate(-75%,50%)!important}.slider.vertical>.tooltip+.tooltip{transform:rotate(90deg) translate(-75%,-50%)!important}:is(nav,.row,.field)>.slider:not(.circle,.small,.medium,.large){flex:auto}.slider.max,.slider.max.vertical,.slider.max>input,.slider.max.vertical>input{all:unset;margin:0!important;position:absolute;color:var(--primary);top:0;right:0;bottom:0;left:0;border-radius:inherit;overflow:hidden;z-index:2;cursor:grab;inline-size:100%;block-size:100%}.slider.max:before{display:none}.slider.max.vertical>input{writing-mode:vertical-lr;transform:rotate(-180deg)}.slider.max>input::-webkit-slider-thumb{opacity:0;inline-size:1rem;block-size:100vh;transform:none!important}.slider.max>input::-moz-range-thumb{opacity:0;inline-size:1rem;block-size:100vh;transform:none!important}.slider.max>span{block-size:auto!important;inset:0 var(--_end) 0 var(--_start);clip-path:none;background:currentcolor;color:inherit;border-radius:0}.slider.max.vertical>span{inset:var(--_end) 0 var(--_start) 0}.slider>input:focus-visible::-webkit-slider-thumb{outline:.1875rem solid var(--primary);outline-offset:.25rem}.slider>input:focus-visible::-moz-range-thumb{outline:.1875rem solid var(--primary);outline-offset:.25rem}.slider.max>input:focus-visible{outline:.1875rem solid var(--primary);outline-offset:-.125rem}@media (pointer: coarse){.slider>:hover~.tooltip{inset-block-start:-1rem!important;opacity:1!important;visibility:visible!important}}.snackbar{position:fixed;inset:auto auto 6rem 50%;inline-size:80%;block-size:auto;z-index:200;visibility:hidden;display:flex;box-shadow:var(--elevate2);color:var(--inverse-on-surface);background-color:var(--inverse-surface);padding:1rem;cursor:pointer;text-align:start;align-items:center;border-radius:.25rem;gap:.5rem;transition:all var(--speed2);transform:translate(-50%,1rem);opacity:0}.snackbar.top{inset:6rem auto auto 50%}.snackbar:is(.active){visibility:visible;transform:translate(-50%);opacity:1}.snackbar:popover-open{visibility:visible;transform:translate(-50%);opacity:1}.snackbar>.max{flex:auto}@media only screen and (min-width: 993px){.snackbar{inline-size:40%}}table{inline-size:100%;border-spacing:0;font-size:.875rem;text-align:start}.scroll>table,table :is(thead,tbody,tfoot,tr,th,td){background-color:inherit;color:inherit}:is(th,td){inline-size:auto;text-align:inherit;padding:.5rem;border-radius:0}:is(th,td)>*{vertical-align:middle}table.border>tbody>tr:not(:last-child)>td,thead>tr>th{border-block-end:.0625rem solid var(--outline)}tfoot>tr>th{border-block-start:.0625rem solid var(--outline)}table.stripes>tbody>tr:nth-child(odd){background-color:var(--active)}table.no-space :is(th,td){padding:0}table.medium-space :is(th,td){padding:.75rem}table.large-space :is(th,td){padding:1rem}table>.fixed,th.fixed{position:sticky;z-index:1;inset-block-start:0}tfoot.fixed,tfoot th.fixed{inset-block-end:0}:is(td,th).min{inline-size:.1%;white-space:nowrap}.tabs{display:flex;white-space:nowrap;border-block-end:.0625rem solid var(--surface-variant);border-radius:0}.tabs:not(.left-align,.right-align,.center-align){justify-content:space-around}.tabs>a{display:flex;font-size:.875rem;font-weight:500;color:var(--on-surface-variant);padding:.5rem 1rem;text-align:center;min-block-size:3rem;inline-size:100%;gap:.25rem}.tabs.small>a{min-block-size:2rem}.tabs.large>a{min-block-size:4rem}.tabs>a.active,.tabs>a.active>i{color:var(--primary)}.tabs>a.active:before{content:"";position:absolute;inset:auto 0 0 0;block-size:.125rem;background-color:var(--primary)}.tabs.min>a.active:before{margin:0 auto;max-inline-size:min(100%,4rem)}.tabs:is(.left-align,.center-align,.right-align)>a{inline-size:auto}.tooltip{--_space: -.5rem;visibility:hidden;display:flex;align-items:center;justify-content:center;gap:.5rem;background-color:var(--inverse-surface);color:var(--inverse-on-surface);font-size:.75rem;text-align:center;border-radius:.25rem;padding:.5rem;position:absolute;z-index:200;inset:0 auto auto 50%;inline-size:auto;white-space:nowrap;font-weight:500;opacity:0;transition:all var(--speed2);line-height:normal;transform:translate(-50%,-100%) scale(.9)}.tooltip.left{inset:50% auto auto 0;transform:translate(-100%,-50%) scale(.9)}.tooltip.right{inset:50% 0 auto auto;transform:translate(100%,-50%) scale(.9)}.tooltip.bottom{inset:auto auto 0 50%;transform:translate(-50%,100%) scale(.9)}.tooltip.small{inline-size:8rem;white-space:normal}.tooltip.medium{inline-size:12rem;white-space:normal}.tooltip.large{inline-size:16rem;white-space:normal}:hover>.tooltip{visibility:visible;opacity:1;transform:translate(-50%,-100%) scale(1)}:hover>.tooltip.left{transform:translate(-100%,-50%) scale(1)}:hover>.tooltip.right{transform:translate(100%,-50%) scale(1)}:hover>.tooltip.bottom{transform:translate(-50%,100%) scale(1)}.tooltip.no-space{--_space: 0}.tooltip.medium-space{--_space: -1rem}.tooltip.large-space{--_space: -1.5rem}.tooltip:not(.left,.right,.bottom){margin-block-start:var(--_space)!important}.tooltip.left,.tooltip.right{margin-inline:var(--_space)!important}.tooltip.bottom{margin-block-end:var(--_space)!important}menu:active~.tooltip,:is(button,.button):focus>menu~.tooltip,.field>:focus~menu~.tooltip{visibility:hidden}.slider>.tooltip{--_space: -1.25rem}.slider.vertical>.tooltip{--_space: -.75rem}.slider.vertical>.tooltip:is(.left,.right){--_space: -.5rem}.tooltip.max{display:block;font-size:inherit;white-space:normal;text-align:start;inline-size:20rem;border-radius:.5rem;padding:1rem;box-shadow:var(--elevate2)} diff --git a/docs/css/material-symbols-outlined.woff2 b/docs/css/material-symbols-outlined.woff2 new file mode 100644 index 00000000..524ab5d2 Binary files /dev/null and b/docs/css/material-symbols-outlined.woff2 differ diff --git a/docs/css/print.css b/docs/css/print.css index 41cae2af..249118a0 100644 --- a/docs/css/print.css +++ b/docs/css/print.css @@ -1,2 +1,214 @@ -body{background:#fff!important;color:#000;font:12pt Times New Roman,Times,serif;line-height:1.3}.adslot,.hero,.menu,aside,footer,form,header,iframe,nav{display:none}#footer,#navigation{display:none!important}content,main{float:none;margin:0;max-width:8.5in!important;width:100%}.row,content,main{display:block!important}.col-md-6{width:100%!important}.mt-2,.mt-3,.mt-4{margin-top:2pt!important}.mb-2,.mb-3,.mb-4{margin-bottom:2pt!important}.my-2,.my-3,.my-4{margin-bottom:0!important;margin-top:0!important}.py-2,.py-3,.py-4{padding-bottom:0!important;padding-top:0!important}.pb-2,.pb-3,.pb-4{padding-bottom:2pt!important}*{background-image:none!important}img,svg{display:none!important}img,svg,table{-webkit-column-break-inside:avoid;-moz-column-break-inside:avoid;break-inside:avoid}.text-bg-light{background-color:transparent!important}.hide-on-print,.row-badges{display:none!important}.print{display:block!important}.h1,h1{font-size:22pt;-webkit-column-break-before:always;-moz-column-break-before:always;break-before:always}.h2,h2{font-size:19pt}.h2,.h3,h2,h3{margin-bottom:8px;margin-top:16px}.h3,h3{font-size:17pt}.h4,h4{font-size:14pt}.h4,.h5,h4,h5{margin-bottom:8px;margin-top:16px}.h5,.paragraph,h5,p{font-size:12pt}.paragraph,p{margin-bottom:8px}blockquote{page-break-inside:avoid}h1,h2,h3,h4,h5,h6,img{page-break-after:avoid}h1,h2,h3,h4,h5,h6,img,pre,table{page-break-inside:avoid}dl,ol,ul{page-break-before:avoid}a,a:link,a:visited{background:transparent;color:#520;font-weight:700;text-align:left;text-decoration:underline}a{page-break-inside:avoid}a[href^=http]:after{content:" < " attr(href) "> "}a:after>img,article a[href^="#"]:after{content:""}a:not(:local-link):after{content:" < " attr(href) "> "} -/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByaW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxLQUdFLHlCQUEyQixDQUMzQixVQUFXLENBSFgscUNBQTBDLENBQzFDLGVBR0YsQ0FFQSx3REFTRSxZQUNGLENBRUEsb0JBRUUsc0JBQ0YsQ0FFQSxhQU1FLFVBQVcsQ0FEWCxRQUFTLENBRlQseUJBQTJCLENBQzNCLFVBR0YsQ0FFQSxrQkFQRSx1QkFTRixDQUVBLFVBQ0Usb0JBQ0YsQ0FFQSxrQkFDRSx3QkFDRixDQUVBLGtCQUNFLDJCQUNGLENBRUEsa0JBRUUseUJBQTJCLENBRDNCLHNCQUVGLENBRUEsa0JBRUUsMEJBQTRCLENBRDVCLHVCQUVGLENBRUEsa0JBQ0UsNEJBQ0YsQ0FFQSxFQUNFLCtCQUNGLENBRUEsUUFFRSxzQkFDRixDQUVBLGNBR0UsaUNBQW1CLENBQW5CLDhCQUFtQixDQUFuQixrQkFDRixDQUVBLGVBQ0Usc0NBQ0YsQ0FNQSwyQkFDRSxzQkFDRixDQUVBLE9BQ0UsdUJBQ0YsQ0FFQSxPQUVFLGNBQWUsQ0FDZixrQ0FBb0IsQ0FBcEIsK0JBQW9CLENBQXBCLG1CQUNGLENBRUEsT0FFRSxjQUdGLENBRUEsY0FIRSxpQkFBa0IsQ0FEbEIsZUFTRixDQUxBLE9BRUUsY0FHRixDQUVBLE9BRUUsY0FHRixDQUVBLGNBSEUsaUJBQWtCLENBRGxCLGVBU0YsQ0FFQSxvQkFMRSxjQVNGLENBSkEsYUFHRSxpQkFDRixDQU9BLFdBQ0UsdUJBQ0YsQ0FZQSxzQkFKRSxzQkFPRixDQUVBLGdDQVJFLHVCQVdGLENBRUEsU0FHRSx1QkFDRixDQUdBLG1CQUdFLHNCQUF1QixDQUN2QixVQUFXLENBQ1gsZUFBaUIsQ0FFakIsZUFBZ0IsQ0FEaEIseUJBRUYsQ0FFQSxFQUNFLHVCQUNGLENBRUEsb0JBQ0UsNkJBQ0YsQ0FNQSx1Q0FDRSxVQUNGLENBRUEseUJBQ0UsNkJBQ0YiLCJmaWxlIjoicHJpbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiogUHJpbnQgc3R5bGVzaGVldCBmb3IgUmVzdW1lXG4gKiogQ29weXJpZ2h0IDIwMDgtMjAyNCBBZGFtIEouIEpvbGljb2V1clxuICoqIGh0dHBzOi8vd3d3LmFkYW1qb2xpY29ldXIuY29tXG4qKi9cbmJvZHkge1xuICBmb250OiAxMnB0IFwiVGltZXMgTmV3IFJvbWFuXCIsIFRpbWVzLCBzZXJpZjtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbiAgYmFja2dyb3VuZDogI2ZmZiAhaW1wb3J0YW50O1xuICBjb2xvcjogIzAwMDtcbn1cblxuaGVhZGVyLFxuZm9vdGVyLFxuYXNpZGUsXG5uYXYsXG5mb3JtLFxuaWZyYW1lLFxuLm1lbnUsXG4uaGVybyxcbi5hZHNsb3Qge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4jbmF2aWdhdGlvbixcbiNmb290ZXIge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbm1haW4sXG5jb250ZW50IHtcbiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgbWF4LXdpZHRoOiA4LjVpbiAhaW1wb3J0YW50O1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAwO1xuICBmbG9hdDogbm9uZTtcbn1cblxuLnJvdyB7XG4gIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG59XG5cbi5jb2wtbWQtNiB7XG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbi5tdC00LCAubXQtMywgLm10LTIge1xuICBtYXJnaW4tdG9wOiAycHQgIWltcG9ydGFudDtcbn1cblxuLm1iLTQsIC5tYi0zLCAubWItMiB7XG4gIG1hcmdpbi1ib3R0b206IDJwdCAhaW1wb3J0YW50O1xufVxuXG4ubXktNCwgLm15LTMsIC5teS0yIHtcbiAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50O1xuICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5weS00LCAucHktMywgLnB5LTIge1xuICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xuICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50O1xufVxuXG4ucGItNCwgLnBiLTMsIC5wYi0yIHtcbiAgcGFkZGluZy1ib3R0b206IDJwdCAhaW1wb3J0YW50O1xufVxuXG4qIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG5pbWcsXG5zdmcge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbnRhYmxlLFxuaW1nLFxuc3ZnIHtcbiAgYnJlYWstaW5zaWRlOiBhdm9pZDtcbn1cblxuLnRleHQtYmctbGlnaHQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4ucm93LWJhZGdlcyB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLmhpZGUtb24tcHJpbnQge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5wcmludCB7XG4gIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG59XG5cbmgxLFxuLmgxIHtcbiAgZm9udC1zaXplOiAyMnB0O1xuICBicmVhay1iZWZvcmU6IGFsd2F5cztcbn1cblxuaDIsXG4uaDIge1xuICBmb250LXNpemU6IDE5cHQ7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuaDMsXG4uaDMge1xuICBmb250LXNpemU6IDE3cHQ7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuaDQsXG4uaDQge1xuICBmb250LXNpemU6IDE0cHQ7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuaDUsXG4uaDUge1xuICBmb250LXNpemU6IDEycHQ7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxucCxcbi5wYXJhZ3JhcGgge1xuICBmb250LXNpemU6IDEycHQ7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuLyogRGVmaW5pbmcgYWxsIHBhZ2UgYnJlYWtzICovXG5hIHtcbiAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xufVxuXG5ibG9ja3F1b3RlIHtcbiAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xufVxuXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuICBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDtcbiAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xufVxuXG5pbWcge1xuICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gIHBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkO1xufVxuXG50YWJsZSxcbnByZSB7XG4gIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbn1cblxudWwsXG5vbCxcbmRsIHtcbiAgcGFnZS1icmVhay1iZWZvcmU6IGF2b2lkO1xufVxuXG4vKiBEaXNwbGF5aW5nIGxpbmsgY29sb3IgYW5kIGxpbmsgYmVoYXZpb3IgKi9cbmE6bGluayxcbmE6dmlzaXRlZCxcbmEge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6ICM1MjA7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuYSB7XG4gIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbn1cblxuYVtocmVmXj1odHRwXTphZnRlciB7XG4gIGNvbnRlbnQ6IFwiIDwgXCIgYXR0cihocmVmKSBcIj4gXCI7XG59XG5cbmE6YWZ0ZXIgPiBpbWcge1xuICBjb250ZW50OiBcIlwiO1xufVxuXG5hcnRpY2xlIGFbaHJlZl49XCIjXCJdOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbn1cblxuYTpub3QoOmxvY2FsLWxpbmspOmFmdGVyIHtcbiAgY29udGVudDogXCIgPCBcIiBhdHRyKGhyZWYpIFwiPiBcIjtcbn1cbiJdfQ== */ \ No newline at end of file +/** + ** Print stylesheet for Resume + ** Copyright 2008-2024 Adam J. Jolicoeur + ** https://www.adamjolicoeur.com +**/ +body { + font: 12pt "Times New Roman", Times, serif; + line-height: 1.3; + background: #fff !important; + color: #000; +} + +header, +footer, +aside, +nav, +form, +iframe, +.menu, +.hero, +.adslot { + display: none; +} + +#navigation, +#footer { + display: none !important; +} + +main, +content { + display: block !important; + max-width: 8.5in !important; + width: 100%; + margin: 0; + float: none; +} + +article { + box-shadow: none !important; +} + +.row { + display: block !important; +} + +.col-md-6 { + width: 100% !important; +} + +.mt-4, .mt-3, .mt-2 { + margin-top: 2pt !important; +} + +.mb-4, .mb-3, .mb-2 { + margin-bottom: 2pt !important; +} + +.my-4, .my-3, .my-2 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.py-4, .py-3, .py-2 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.pb-4, .pb-3, .pb-2 { + padding-bottom: 2pt !important; +} + +* { + background-image: none !important; +} + +img, +svg { + display: none !important; +} + +table, +img, +svg { + break-inside: avoid; +} + +.large-space, +.medium-space, +.small-space { + display: none !important; +} + +.text-bg-light { + background-color: transparent !important; +} + +.row-badges { + display: none !important; +} + +.hide-on-print { + display: none !important; +} + +.print { + display: block !important; +} + +h1, +.h1 { + font-size: 22pt; + break-before: always; +} + +h2, +.h2 { + font-size: 19pt; + margin-top: 16px; + margin-bottom: 8px; +} + +h3, +.h3 { + font-size: 17pt; + margin-top: 16px; + margin-bottom: 8px; +} + +h4, +.h4 { + font-size: 14pt; + margin-top: 16px; + margin-bottom: 8px; +} + +h5, +.h5 { + font-size: 12pt; + margin-top: 16px; + margin-bottom: 8px; +} + +p, +.paragraph { + font-size: 12pt; + margin-bottom: 8px; +} + +/* Defining all page breaks */ +a { + page-break-inside: avoid; +} + +blockquote { + page-break-inside: avoid; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + page-break-after: avoid; + page-break-inside: avoid; +} + +img { + page-break-inside: avoid; + page-break-after: avoid; +} + +table, +pre { + page-break-inside: avoid; +} + +ul, +ol, +dl { + page-break-before: avoid; +} + +/* Displaying link color and link behavior */ +a:link, +a:visited, +a { + background: transparent; + color: #520; + font-weight: bold; + text-decoration: underline; + text-align: left; +} + +a { + page-break-inside: avoid; +} + +a[href^=http]:after { + content: " < " attr(href) "> "; +} + +a:after > img { + content: ""; +} + +article a[href^="#"]:after { + content: ""; +} + +a:not(:local-link):after { + content: " < " attr(href) "> "; +} diff --git a/docs/css/print.min.css b/docs/css/print.min.css new file mode 100644 index 00000000..249118a0 --- /dev/null +++ b/docs/css/print.min.css @@ -0,0 +1,214 @@ +/** + ** Print stylesheet for Resume + ** Copyright 2008-2024 Adam J. Jolicoeur + ** https://www.adamjolicoeur.com +**/ +body { + font: 12pt "Times New Roman", Times, serif; + line-height: 1.3; + background: #fff !important; + color: #000; +} + +header, +footer, +aside, +nav, +form, +iframe, +.menu, +.hero, +.adslot { + display: none; +} + +#navigation, +#footer { + display: none !important; +} + +main, +content { + display: block !important; + max-width: 8.5in !important; + width: 100%; + margin: 0; + float: none; +} + +article { + box-shadow: none !important; +} + +.row { + display: block !important; +} + +.col-md-6 { + width: 100% !important; +} + +.mt-4, .mt-3, .mt-2 { + margin-top: 2pt !important; +} + +.mb-4, .mb-3, .mb-2 { + margin-bottom: 2pt !important; +} + +.my-4, .my-3, .my-2 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.py-4, .py-3, .py-2 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.pb-4, .pb-3, .pb-2 { + padding-bottom: 2pt !important; +} + +* { + background-image: none !important; +} + +img, +svg { + display: none !important; +} + +table, +img, +svg { + break-inside: avoid; +} + +.large-space, +.medium-space, +.small-space { + display: none !important; +} + +.text-bg-light { + background-color: transparent !important; +} + +.row-badges { + display: none !important; +} + +.hide-on-print { + display: none !important; +} + +.print { + display: block !important; +} + +h1, +.h1 { + font-size: 22pt; + break-before: always; +} + +h2, +.h2 { + font-size: 19pt; + margin-top: 16px; + margin-bottom: 8px; +} + +h3, +.h3 { + font-size: 17pt; + margin-top: 16px; + margin-bottom: 8px; +} + +h4, +.h4 { + font-size: 14pt; + margin-top: 16px; + margin-bottom: 8px; +} + +h5, +.h5 { + font-size: 12pt; + margin-top: 16px; + margin-bottom: 8px; +} + +p, +.paragraph { + font-size: 12pt; + margin-bottom: 8px; +} + +/* Defining all page breaks */ +a { + page-break-inside: avoid; +} + +blockquote { + page-break-inside: avoid; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + page-break-after: avoid; + page-break-inside: avoid; +} + +img { + page-break-inside: avoid; + page-break-after: avoid; +} + +table, +pre { + page-break-inside: avoid; +} + +ul, +ol, +dl { + page-break-before: avoid; +} + +/* Displaying link color and link behavior */ +a:link, +a:visited, +a { + background: transparent; + color: #520; + font-weight: bold; + text-decoration: underline; + text-align: left; +} + +a { + page-break-inside: avoid; +} + +a[href^=http]:after { + content: " < " attr(href) "> "; +} + +a:after > img { + content: ""; +} + +article a[href^="#"]:after { + content: ""; +} + +a:not(:local-link):after { + content: " < " attr(href) "> "; +} diff --git a/docs/css/prism.css b/docs/css/prism.css deleted file mode 100644 index 8dd5c6f8..00000000 --- a/docs/css/prism.css +++ /dev/null @@ -1,2 +0,0 @@ -code[class*=language-],pre[class*=language-]{background:0 0;color:#000;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;text-shadow:0 1px #fff;white-space:pre;word-break:normal;word-spacing:normal;word-wrap:normal;-ms-hyphens:none;hyphens:none;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{background:#b3d4fc;text-shadow:none}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{background:#b3d4fc;text-shadow:none}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{margin:.5em 0;overflow:auto;padding:1em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{background:hsla(0,0%,100%,.5);color:#9a6e3a}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}div.code-toolbar{position:relative}div.code-toolbar>.toolbar{opacity:0;position:absolute;right:.2em;top:.3em;-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out;z-index:10}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar:focus-within>.toolbar{opacity:1}div.code-toolbar>.toolbar>.toolbar-item{display:inline-block}div.code-toolbar>.toolbar>.toolbar-item>a{cursor:pointer}div.code-toolbar>.toolbar>.toolbar-item>button{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}div.code-toolbar>.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar>.toolbar-item>span{background:#f5f2f0;background:hsla(0,0%,88%,.2);border-radius:.5em;-webkit-box-shadow:0 2px 0 0 rgba(0,0,0,.2);box-shadow:0 2px 0 0 rgba(0,0,0,.2);color:#bbb;font-size:.8em;padding:0 .5em}div.code-toolbar>.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar>.toolbar-item>span:focus,div.code-toolbar>.toolbar>.toolbar-item>span:hover{color:inherit;text-decoration:none} -/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByaXNtLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSw2Q0FFRSxjQUFlLENBRGYsVUFBVyxDQUdYLDZEQUFzRSxDQUN0RSxhQUFjLENBQ2QsZUFBZ0IsQ0FIaEIsc0JBQXVCLENBSXZCLGVBQWdCLENBRWhCLGlCQUFrQixDQURsQixtQkFBb0IsQ0FFcEIsZ0JBQWlCLENBT2pCLGdCQUFpQixDQUNqQixZQUFhLENBUGIsZUFBZ0IsQ0FDaEIsZUFBZ0IsQ0FDaEIsYUFBYyxDQUNkLFVBS0YsQ0FFQSw0SkFFRSxrQkFBbUIsQ0FEbkIsZ0JBRUYsQ0FFQSx3SUFFRSxrQkFBbUIsQ0FEbkIsZ0JBRUYsQ0FFQSxhQUNFLDZDQUNFLGdCQUNGLENBQ0YsQ0FDQSxzQkFFRSxhQUFlLENBQ2YsYUFBYyxDQUZkLFdBR0YsQ0FFQSx1REFDRSxrQkFDRixDQUVBLGlDQUVFLGtCQUFvQixDQURwQixZQUFjLENBRWQsa0JBQ0YsQ0FFQSx5REFDRSxhQUNGLENBRUEsbUJBQ0UsVUFDRixDQUVBLGlCQUNFLFVBQ0YsQ0FFQSxxR0FDRSxVQUNGLENBRUEsMEZBQ0UsVUFDRixDQUVBLDBGQUVFLDZCQUFrQyxDQURsQyxhQUVGLENBRUEsK0NBQ0UsVUFDRixDQUVBLGtDQUNFLGFBQ0YsQ0FFQSw4Q0FDRSxVQUNGLENBRUEsNkJBQ0UsZUFDRixDQUVBLGNBQ0UsaUJBQ0YsQ0FFQSxjQUNFLFdBQ0YsQ0FFQSxpQkFDRSxpQkFDRixDQUVBLDBCQU1FLFNBQVUsQ0FMVixpQkFBa0IsQ0FHbEIsVUFBWSxDQURaLFFBQVUsQ0FFViwwQ0FBb0MsQ0FBcEMsa0NBQW9DLENBSHBDLFVBS0YsQ0FFQSxnQ0FDRSxTQUNGLENBRUEsdUNBQ0UsU0FDRixDQUVBLHdDQUNFLG9CQUNGLENBRUEsMENBQ0UsY0FDRixDQUVBLCtDQUNFLGNBQWUsQ0FDZixRQUFTLENBQ1QsYUFBYyxDQUNkLFlBQWEsQ0FDYixrQkFBbUIsQ0FDbkIsZ0JBQWlCLENBQ2pCLFNBQVUsQ0FDVix3QkFBeUIsQ0FDekIscUJBQXNCLENBQ3RCLG9CQUNGLENBRUEsc0lBSUUsa0JBQW1CLENBQ25CLDRCQUFvQyxDQUVwQyxrQkFBb0IsQ0FEcEIsMkNBQXdDLENBQXhDLG1DQUF3QyxDQUx4QyxVQUFXLENBQ1gsY0FBZ0IsQ0FDaEIsY0FLRixDQUVBLGdUQUNFLGFBQWMsQ0FDZCxvQkFDRiIsImZpbGUiOiJwcmlzbS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBQcmlzbUpTIDEuMjkuMFxuaHR0cHM6Ly9wcmlzbWpzLmNvbS9kb3dubG9hZC5odG1sI3RoZW1lcz1wcmlzbSZsYW5ndWFnZXM9bWFya3VwK2NzcytjbGlrZStqYXZhc2NyaXB0K21hcmtkb3duK3Njc3MmcGx1Z2lucz1zaG93LWxhbmd1YWdlK3Rvb2xiYXIgKi9cbmNvZGVbY2xhc3MqPWxhbmd1YWdlLV0sIHByZVtjbGFzcyo9bGFuZ3VhZ2UtXSB7XG4gIGNvbG9yOiAjMDAwO1xuICBiYWNrZ3JvdW5kOiAwIDA7XG4gIHRleHQtc2hhZG93OiAwIDFweCAjZmZmO1xuICBmb250LWZhbWlseTogQ29uc29sYXMsIE1vbmFjbywgXCJBbmRhbGUgTW9ub1wiLCBcIlVidW50dSBNb25vXCIsIG1vbm9zcGFjZTtcbiAgZm9udC1zaXplOiAxZW07XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIHdoaXRlLXNwYWNlOiBwcmU7XG4gIHdvcmQtc3BhY2luZzogbm9ybWFsO1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG4gIHdvcmQtd3JhcDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMS41O1xuICAtbW96LXRhYi1zaXplOiA0O1xuICAtby10YWItc2l6ZTogNDtcbiAgdGFiLXNpemU6IDQ7XG4gIC13ZWJraXQtaHlwaGVuczogbm9uZTtcbiAgLW1vei1oeXBoZW5zOiBub25lO1xuICAtbXMtaHlwaGVuczogbm9uZTtcbiAgaHlwaGVuczogbm9uZTtcbn1cblxuY29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSA6Oi1tb3otc2VsZWN0aW9uLCBjb2RlW2NsYXNzKj1sYW5ndWFnZS1dOjotbW96LXNlbGVjdGlvbiwgcHJlW2NsYXNzKj1sYW5ndWFnZS1dIDo6LW1vei1zZWxlY3Rpb24sIHByZVtjbGFzcyo9bGFuZ3VhZ2UtXTo6LW1vei1zZWxlY3Rpb24ge1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgYmFja2dyb3VuZDogI2IzZDRmYztcbn1cblxuY29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSA6OnNlbGVjdGlvbiwgY29kZVtjbGFzcyo9bGFuZ3VhZ2UtXTo6c2VsZWN0aW9uLCBwcmVbY2xhc3MqPWxhbmd1YWdlLV0gOjpzZWxlY3Rpb24sIHByZVtjbGFzcyo9bGFuZ3VhZ2UtXTo6c2VsZWN0aW9uIHtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIGJhY2tncm91bmQ6ICNiM2Q0ZmM7XG59XG5cbkBtZWRpYSBwcmludCB7XG4gIGNvZGVbY2xhc3MqPWxhbmd1YWdlLV0sIHByZVtjbGFzcyo9bGFuZ3VhZ2UtXSB7XG4gICAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIH1cbn1cbnByZVtjbGFzcyo9bGFuZ3VhZ2UtXSB7XG4gIHBhZGRpbmc6IDFlbTtcbiAgbWFyZ2luOiAwLjVlbSAwO1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuOm5vdChwcmUpID4gY29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSwgcHJlW2NsYXNzKj1sYW5ndWFnZS1dIHtcbiAgYmFja2dyb3VuZDogI2Y1ZjJmMDtcbn1cblxuOm5vdChwcmUpID4gY29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSB7XG4gIHBhZGRpbmc6IDAuMWVtO1xuICBib3JkZXItcmFkaXVzOiAwLjNlbTtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbn1cblxuLnRva2VuLmNkYXRhLCAudG9rZW4uY29tbWVudCwgLnRva2VuLmRvY3R5cGUsIC50b2tlbi5wcm9sb2cge1xuICBjb2xvcjogIzcwODA5MDtcbn1cblxuLnRva2VuLnB1bmN0dWF0aW9uIHtcbiAgY29sb3I6ICM5OTk7XG59XG5cbi50b2tlbi5uYW1lc3BhY2Uge1xuICBvcGFjaXR5OiAwLjc7XG59XG5cbi50b2tlbi5ib29sZWFuLCAudG9rZW4uY29uc3RhbnQsIC50b2tlbi5kZWxldGVkLCAudG9rZW4ubnVtYmVyLCAudG9rZW4ucHJvcGVydHksIC50b2tlbi5zeW1ib2wsIC50b2tlbi50YWcge1xuICBjb2xvcjogIzkwNTtcbn1cblxuLnRva2VuLmF0dHItbmFtZSwgLnRva2VuLmJ1aWx0aW4sIC50b2tlbi5jaGFyLCAudG9rZW4uaW5zZXJ0ZWQsIC50b2tlbi5zZWxlY3RvciwgLnRva2VuLnN0cmluZyB7XG4gIGNvbG9yOiAjNjkwO1xufVxuXG4ubGFuZ3VhZ2UtY3NzIC50b2tlbi5zdHJpbmcsIC5zdHlsZSAudG9rZW4uc3RyaW5nLCAudG9rZW4uZW50aXR5LCAudG9rZW4ub3BlcmF0b3IsIC50b2tlbi51cmwge1xuICBjb2xvcjogIzlhNmUzYTtcbiAgYmFja2dyb3VuZDogaHNsYSgwLCAwJSwgMTAwJSwgMC41KTtcbn1cblxuLnRva2VuLmF0cnVsZSwgLnRva2VuLmF0dHItdmFsdWUsIC50b2tlbi5rZXl3b3JkIHtcbiAgY29sb3I6ICMwN2E7XG59XG5cbi50b2tlbi5jbGFzcy1uYW1lLCAudG9rZW4uZnVuY3Rpb24ge1xuICBjb2xvcjogI2RkNGE2ODtcbn1cblxuLnRva2VuLmltcG9ydGFudCwgLnRva2VuLnJlZ2V4LCAudG9rZW4udmFyaWFibGUge1xuICBjb2xvcjogI2U5MDtcbn1cblxuLnRva2VuLmJvbGQsIC50b2tlbi5pbXBvcnRhbnQge1xuICBmb250LXdlaWdodDogNzAwO1xufVxuXG4udG9rZW4uaXRhbGljIHtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4udG9rZW4uZW50aXR5IHtcbiAgY3Vyc29yOiBoZWxwO1xufVxuXG5kaXYuY29kZS10b29sYmFyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG5kaXYuY29kZS10b29sYmFyID4gLnRvb2xiYXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDEwO1xuICB0b3A6IDAuM2VtO1xuICByaWdodDogMC4yZW07XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlLWluLW91dDtcbiAgb3BhY2l0eTogMDtcbn1cblxuZGl2LmNvZGUtdG9vbGJhcjpob3ZlciA+IC50b29sYmFyIHtcbiAgb3BhY2l0eTogMTtcbn1cblxuZGl2LmNvZGUtdG9vbGJhcjpmb2N1cy13aXRoaW4gPiAudG9vbGJhciB7XG4gIG9wYWNpdHk6IDE7XG59XG5cbmRpdi5jb2RlLXRvb2xiYXIgPiAudG9vbGJhciA+IC50b29sYmFyLWl0ZW0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbmRpdi5jb2RlLXRvb2xiYXIgPiAudG9vbGJhciA+IC50b29sYmFyLWl0ZW0gPiBhIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5kaXYuY29kZS10b29sYmFyID4gLnRvb2xiYXIgPiAudG9vbGJhci1pdGVtID4gYnV0dG9uIHtcbiAgYmFja2dyb3VuZDogMCAwO1xuICBib3JkZXI6IDA7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBmb250OiBpbmhlcml0O1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgcGFkZGluZzogMDtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xufVxuXG5kaXYuY29kZS10b29sYmFyID4gLnRvb2xiYXIgPiAudG9vbGJhci1pdGVtID4gYSwgZGl2LmNvZGUtdG9vbGJhciA+IC50b29sYmFyID4gLnRvb2xiYXItaXRlbSA+IGJ1dHRvbiwgZGl2LmNvZGUtdG9vbGJhciA+IC50b29sYmFyID4gLnRvb2xiYXItaXRlbSA+IHNwYW4ge1xuICBjb2xvcjogI2JiYjtcbiAgZm9udC1zaXplOiAwLjhlbTtcbiAgcGFkZGluZzogMCAwLjVlbTtcbiAgYmFja2dyb3VuZDogI2Y1ZjJmMDtcbiAgYmFja2dyb3VuZDogcmdiYSgyMjQsIDIyNCwgMjI0LCAwLjIpO1xuICBib3gtc2hhZG93OiAwIDJweCAwIDAgcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBib3JkZXItcmFkaXVzOiAwLjVlbTtcbn1cblxuZGl2LmNvZGUtdG9vbGJhciA+IC50b29sYmFyID4gLnRvb2xiYXItaXRlbSA+IGE6Zm9jdXMsIGRpdi5jb2RlLXRvb2xiYXIgPiAudG9vbGJhciA+IC50b29sYmFyLWl0ZW0gPiBhOmhvdmVyLCBkaXYuY29kZS10b29sYmFyID4gLnRvb2xiYXIgPiAudG9vbGJhci1pdGVtID4gYnV0dG9uOmZvY3VzLCBkaXYuY29kZS10b29sYmFyID4gLnRvb2xiYXIgPiAudG9vbGJhci1pdGVtID4gYnV0dG9uOmhvdmVyLCBkaXYuY29kZS10b29sYmFyID4gLnRvb2xiYXIgPiAudG9vbGJhci1pdGVtID4gc3Bhbjpmb2N1cywgZGl2LmNvZGUtdG9vbGJhciA+IC50b29sYmFyID4gLnRvb2xiYXItaXRlbSA+IHNwYW46aG92ZXIge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuIl19 */ \ No newline at end of file diff --git a/docs/css/style.css b/docs/css/style.css index 5429de7d..4935df2d 100644 --- a/docs/css/style.css +++ b/docs/css/style.css @@ -1,5616 +1,193 @@ @charset "UTF-8"; -/* stylelint-disable */ -/*! - * Bootstrap Grid v5.3.6 (https://getbootstrap.com/) - * Copyright 2011-2025 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -.container, -.container-fluid, -.container-xxl, -.container-xl, -.container-lg, -.container-md, -.container-sm { - --bs-gutter-x: 1.5rem; - --bs-gutter-y: 0; - width: 100%; - padding-right: calc(var(--bs-gutter-x) * 0.5); - padding-left: calc(var(--bs-gutter-x) * 0.5); - margin-right: auto; - margin-left: auto; -} - -@media (min-width: 576px) { - .container-sm, .container { - max-width: 540px; - } -} -@media (min-width: 768px) { - .container-md, .container-sm, .container { - max-width: 720px; - } -} -@media (min-width: 992px) { - .container-lg, .container-md, .container-sm, .container { - max-width: 960px; - } -} -@media (min-width: 1200px) { - .container-xl, .container-lg, .container-md, .container-sm, .container { - max-width: 1140px; - } -} -@media (min-width: 1400px) { - .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { - max-width: 1320px; - } -} -:root { - --bs-breakpoint-xs: 0; - --bs-breakpoint-sm: 576px; - --bs-breakpoint-md: 768px; - --bs-breakpoint-lg: 992px; - --bs-breakpoint-xl: 1200px; - --bs-breakpoint-xxl: 1400px; -} - -.row { - --bs-gutter-x: 1.5rem; - --bs-gutter-y: 0; - display: flex; - flex-wrap: wrap; - margin-top: calc(-1 * var(--bs-gutter-y)); - margin-right: calc(-0.5 * var(--bs-gutter-x)); - margin-left: calc(-0.5 * var(--bs-gutter-x)); -} -.row > * { - box-sizing: border-box; - flex-shrink: 0; - width: 100%; - max-width: 100%; - padding-right: calc(var(--bs-gutter-x) * 0.5); - padding-left: calc(var(--bs-gutter-x) * 0.5); - margin-top: var(--bs-gutter-y); -} - -.col { - flex: 1 0 0; -} - -.row-cols-auto > * { - flex: 0 0 auto; - width: auto; -} - -.row-cols-1 > * { - flex: 0 0 auto; - width: 100%; -} - -.row-cols-2 > * { - flex: 0 0 auto; - width: 50%; -} - -.row-cols-3 > * { - flex: 0 0 auto; - width: 33.33333333%; -} - -.row-cols-4 > * { - flex: 0 0 auto; - width: 25%; -} - -.row-cols-5 > * { - flex: 0 0 auto; - width: 20%; -} - -.row-cols-6 > * { - flex: 0 0 auto; - width: 16.66666667%; -} - -.col-auto { - flex: 0 0 auto; - width: auto; -} - -.col-1 { - flex: 0 0 auto; - width: 8.33333333%; -} - -.col-2 { - flex: 0 0 auto; - width: 16.66666667%; -} - -.col-3 { - flex: 0 0 auto; - width: 25%; -} - -.col-4 { - flex: 0 0 auto; - width: 33.33333333%; -} - -.col-5 { - flex: 0 0 auto; - width: 41.66666667%; -} - -.col-6 { - flex: 0 0 auto; - width: 50%; -} - -.col-7 { - flex: 0 0 auto; - width: 58.33333333%; -} - -.col-8 { - flex: 0 0 auto; - width: 66.66666667%; -} - -.col-9 { - flex: 0 0 auto; - width: 75%; -} - -.col-10 { - flex: 0 0 auto; - width: 83.33333333%; -} - -.col-11 { - flex: 0 0 auto; - width: 91.66666667%; -} - -.col-12 { - flex: 0 0 auto; - width: 100%; -} - -.offset-1 { - margin-left: 8.33333333%; -} - -.offset-2 { - margin-left: 16.66666667%; -} - -.offset-3 { - margin-left: 25%; -} - -.offset-4 { - margin-left: 33.33333333%; -} - -.offset-5 { - margin-left: 41.66666667%; -} - -.offset-6 { - margin-left: 50%; -} - -.offset-7 { - margin-left: 58.33333333%; -} - -.offset-8 { - margin-left: 66.66666667%; -} - -.offset-9 { - margin-left: 75%; -} - -.offset-10 { - margin-left: 83.33333333%; -} - -.offset-11 { - margin-left: 91.66666667%; -} - -.g-0, -.gx-0 { - --bs-gutter-x: 0; -} - -.g-0, -.gy-0 { - --bs-gutter-y: 0; -} - -.g-1, -.gx-1 { - --bs-gutter-x: 0.25rem; -} - -.g-1, -.gy-1 { - --bs-gutter-y: 0.25rem; -} - -.g-2, -.gx-2 { - --bs-gutter-x: 0.5rem; -} - -.g-2, -.gy-2 { - --bs-gutter-y: 0.5rem; -} - -.g-3, -.gx-3 { - --bs-gutter-x: 1rem; -} - -.g-3, -.gy-3 { - --bs-gutter-y: 1rem; -} - -.g-4, -.gx-4 { - --bs-gutter-x: 1.5rem; -} - -.g-4, -.gy-4 { - --bs-gutter-y: 1.5rem; -} - -.g-5, -.gx-5 { - --bs-gutter-x: 3rem; -} - -.g-5, -.gy-5 { - --bs-gutter-y: 3rem; -} - -@media (min-width: 576px) { - .col-sm { - flex: 1 0 0; - } - .row-cols-sm-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-sm-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-sm-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-sm-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-sm-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-sm-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-sm-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-sm-auto { - flex: 0 0 auto; - width: auto; - } - .col-sm-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-sm-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-sm-3 { - flex: 0 0 auto; - width: 25%; - } - .col-sm-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-sm-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-sm-6 { - flex: 0 0 auto; - width: 50%; - } - .col-sm-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-sm-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-sm-9 { - flex: 0 0 auto; - width: 75%; - } - .col-sm-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-sm-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-sm-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-sm-0 { - margin-left: 0; - } - .offset-sm-1 { - margin-left: 8.33333333%; - } - .offset-sm-2 { - margin-left: 16.66666667%; - } - .offset-sm-3 { - margin-left: 25%; - } - .offset-sm-4 { - margin-left: 33.33333333%; - } - .offset-sm-5 { - margin-left: 41.66666667%; - } - .offset-sm-6 { - margin-left: 50%; - } - .offset-sm-7 { - margin-left: 58.33333333%; - } - .offset-sm-8 { - margin-left: 66.66666667%; - } - .offset-sm-9 { - margin-left: 75%; - } - .offset-sm-10 { - margin-left: 83.33333333%; - } - .offset-sm-11 { - margin-left: 91.66666667%; - } - .g-sm-0, - .gx-sm-0 { - --bs-gutter-x: 0; - } - .g-sm-0, - .gy-sm-0 { - --bs-gutter-y: 0; - } - .g-sm-1, - .gx-sm-1 { - --bs-gutter-x: 0.25rem; - } - .g-sm-1, - .gy-sm-1 { - --bs-gutter-y: 0.25rem; - } - .g-sm-2, - .gx-sm-2 { - --bs-gutter-x: 0.5rem; - } - .g-sm-2, - .gy-sm-2 { - --bs-gutter-y: 0.5rem; - } - .g-sm-3, - .gx-sm-3 { - --bs-gutter-x: 1rem; - } - .g-sm-3, - .gy-sm-3 { - --bs-gutter-y: 1rem; - } - .g-sm-4, - .gx-sm-4 { - --bs-gutter-x: 1.5rem; - } - .g-sm-4, - .gy-sm-4 { - --bs-gutter-y: 1.5rem; - } - .g-sm-5, - .gx-sm-5 { - --bs-gutter-x: 3rem; - } - .g-sm-5, - .gy-sm-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 768px) { - .col-md { - flex: 1 0 0; - } - .row-cols-md-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-md-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-md-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-md-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-md-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-md-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-md-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-md-auto { - flex: 0 0 auto; - width: auto; - } - .col-md-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-md-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-md-3 { - flex: 0 0 auto; - width: 25%; - } - .col-md-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-md-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-md-6 { - flex: 0 0 auto; - width: 50%; - } - .col-md-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-md-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-md-9 { - flex: 0 0 auto; - width: 75%; - } - .col-md-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-md-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-md-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-md-0 { - margin-left: 0; - } - .offset-md-1 { - margin-left: 8.33333333%; - } - .offset-md-2 { - margin-left: 16.66666667%; - } - .offset-md-3 { - margin-left: 25%; - } - .offset-md-4 { - margin-left: 33.33333333%; - } - .offset-md-5 { - margin-left: 41.66666667%; - } - .offset-md-6 { - margin-left: 50%; - } - .offset-md-7 { - margin-left: 58.33333333%; - } - .offset-md-8 { - margin-left: 66.66666667%; - } - .offset-md-9 { - margin-left: 75%; - } - .offset-md-10 { - margin-left: 83.33333333%; - } - .offset-md-11 { - margin-left: 91.66666667%; - } - .g-md-0, - .gx-md-0 { - --bs-gutter-x: 0; - } - .g-md-0, - .gy-md-0 { - --bs-gutter-y: 0; - } - .g-md-1, - .gx-md-1 { - --bs-gutter-x: 0.25rem; - } - .g-md-1, - .gy-md-1 { - --bs-gutter-y: 0.25rem; - } - .g-md-2, - .gx-md-2 { - --bs-gutter-x: 0.5rem; - } - .g-md-2, - .gy-md-2 { - --bs-gutter-y: 0.5rem; - } - .g-md-3, - .gx-md-3 { - --bs-gutter-x: 1rem; - } - .g-md-3, - .gy-md-3 { - --bs-gutter-y: 1rem; - } - .g-md-4, - .gx-md-4 { - --bs-gutter-x: 1.5rem; - } - .g-md-4, - .gy-md-4 { - --bs-gutter-y: 1.5rem; - } - .g-md-5, - .gx-md-5 { - --bs-gutter-x: 3rem; - } - .g-md-5, - .gy-md-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 992px) { - .col-lg { - flex: 1 0 0; - } - .row-cols-lg-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-lg-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-lg-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-lg-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-lg-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-lg-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-lg-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-lg-auto { - flex: 0 0 auto; - width: auto; - } - .col-lg-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-lg-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-lg-3 { - flex: 0 0 auto; - width: 25%; - } - .col-lg-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-lg-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-lg-6 { - flex: 0 0 auto; - width: 50%; - } - .col-lg-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-lg-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-lg-9 { - flex: 0 0 auto; - width: 75%; - } - .col-lg-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-lg-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-lg-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-lg-0 { - margin-left: 0; - } - .offset-lg-1 { - margin-left: 8.33333333%; - } - .offset-lg-2 { - margin-left: 16.66666667%; - } - .offset-lg-3 { - margin-left: 25%; - } - .offset-lg-4 { - margin-left: 33.33333333%; - } - .offset-lg-5 { - margin-left: 41.66666667%; - } - .offset-lg-6 { - margin-left: 50%; - } - .offset-lg-7 { - margin-left: 58.33333333%; - } - .offset-lg-8 { - margin-left: 66.66666667%; - } - .offset-lg-9 { - margin-left: 75%; - } - .offset-lg-10 { - margin-left: 83.33333333%; - } - .offset-lg-11 { - margin-left: 91.66666667%; - } - .g-lg-0, - .gx-lg-0 { - --bs-gutter-x: 0; - } - .g-lg-0, - .gy-lg-0 { - --bs-gutter-y: 0; - } - .g-lg-1, - .gx-lg-1 { - --bs-gutter-x: 0.25rem; - } - .g-lg-1, - .gy-lg-1 { - --bs-gutter-y: 0.25rem; - } - .g-lg-2, - .gx-lg-2 { - --bs-gutter-x: 0.5rem; - } - .g-lg-2, - .gy-lg-2 { - --bs-gutter-y: 0.5rem; - } - .g-lg-3, - .gx-lg-3 { - --bs-gutter-x: 1rem; - } - .g-lg-3, - .gy-lg-3 { - --bs-gutter-y: 1rem; - } - .g-lg-4, - .gx-lg-4 { - --bs-gutter-x: 1.5rem; - } - .g-lg-4, - .gy-lg-4 { - --bs-gutter-y: 1.5rem; - } - .g-lg-5, - .gx-lg-5 { - --bs-gutter-x: 3rem; - } - .g-lg-5, - .gy-lg-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1200px) { - .col-xl { - flex: 1 0 0; - } - .row-cols-xl-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-xl-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-xl-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-xl-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-xl-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-xl-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-xl-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xl-auto { - flex: 0 0 auto; - width: auto; - } - .col-xl-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-xl-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xl-3 { - flex: 0 0 auto; - width: 25%; - } - .col-xl-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-xl-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-xl-6 { - flex: 0 0 auto; - width: 50%; - } - .col-xl-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-xl-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-xl-9 { - flex: 0 0 auto; - width: 75%; - } - .col-xl-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-xl-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-xl-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-xl-0 { - margin-left: 0; - } - .offset-xl-1 { - margin-left: 8.33333333%; - } - .offset-xl-2 { - margin-left: 16.66666667%; - } - .offset-xl-3 { - margin-left: 25%; - } - .offset-xl-4 { - margin-left: 33.33333333%; - } - .offset-xl-5 { - margin-left: 41.66666667%; - } - .offset-xl-6 { - margin-left: 50%; - } - .offset-xl-7 { - margin-left: 58.33333333%; - } - .offset-xl-8 { - margin-left: 66.66666667%; - } - .offset-xl-9 { - margin-left: 75%; - } - .offset-xl-10 { - margin-left: 83.33333333%; - } - .offset-xl-11 { - margin-left: 91.66666667%; - } - .g-xl-0, - .gx-xl-0 { - --bs-gutter-x: 0; - } - .g-xl-0, - .gy-xl-0 { - --bs-gutter-y: 0; - } - .g-xl-1, - .gx-xl-1 { - --bs-gutter-x: 0.25rem; - } - .g-xl-1, - .gy-xl-1 { - --bs-gutter-y: 0.25rem; - } - .g-xl-2, - .gx-xl-2 { - --bs-gutter-x: 0.5rem; - } - .g-xl-2, - .gy-xl-2 { - --bs-gutter-y: 0.5rem; - } - .g-xl-3, - .gx-xl-3 { - --bs-gutter-x: 1rem; - } - .g-xl-3, - .gy-xl-3 { - --bs-gutter-y: 1rem; - } - .g-xl-4, - .gx-xl-4 { - --bs-gutter-x: 1.5rem; - } - .g-xl-4, - .gy-xl-4 { - --bs-gutter-y: 1.5rem; - } - .g-xl-5, - .gx-xl-5 { - --bs-gutter-x: 3rem; - } - .g-xl-5, - .gy-xl-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1400px) { - .col-xxl { - flex: 1 0 0; - } - .row-cols-xxl-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-xxl-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-xxl-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-xxl-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-xxl-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-xxl-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-xxl-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xxl-auto { - flex: 0 0 auto; - width: auto; - } - .col-xxl-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-xxl-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xxl-3 { - flex: 0 0 auto; - width: 25%; - } - .col-xxl-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-xxl-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-xxl-6 { - flex: 0 0 auto; - width: 50%; - } - .col-xxl-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-xxl-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-xxl-9 { - flex: 0 0 auto; - width: 75%; - } - .col-xxl-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-xxl-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-xxl-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-xxl-0 { - margin-left: 0; - } - .offset-xxl-1 { - margin-left: 8.33333333%; - } - .offset-xxl-2 { - margin-left: 16.66666667%; - } - .offset-xxl-3 { - margin-left: 25%; - } - .offset-xxl-4 { - margin-left: 33.33333333%; - } - .offset-xxl-5 { - margin-left: 41.66666667%; - } - .offset-xxl-6 { - margin-left: 50%; - } - .offset-xxl-7 { - margin-left: 58.33333333%; - } - .offset-xxl-8 { - margin-left: 66.66666667%; - } - .offset-xxl-9 { - margin-left: 75%; - } - .offset-xxl-10 { - margin-left: 83.33333333%; - } - .offset-xxl-11 { - margin-left: 91.66666667%; - } - .g-xxl-0, - .gx-xxl-0 { - --bs-gutter-x: 0; - } - .g-xxl-0, - .gy-xxl-0 { - --bs-gutter-y: 0; - } - .g-xxl-1, - .gx-xxl-1 { - --bs-gutter-x: 0.25rem; - } - .g-xxl-1, - .gy-xxl-1 { - --bs-gutter-y: 0.25rem; - } - .g-xxl-2, - .gx-xxl-2 { - --bs-gutter-x: 0.5rem; - } - .g-xxl-2, - .gy-xxl-2 { - --bs-gutter-y: 0.5rem; - } - .g-xxl-3, - .gx-xxl-3 { - --bs-gutter-x: 1rem; - } - .g-xxl-3, - .gy-xxl-3 { - --bs-gutter-y: 1rem; - } - .g-xxl-4, - .gx-xxl-4 { - --bs-gutter-x: 1.5rem; - } - .g-xxl-4, - .gy-xxl-4 { - --bs-gutter-y: 1.5rem; - } - .g-xxl-5, - .gx-xxl-5 { - --bs-gutter-x: 3rem; - } - .g-xxl-5, - .gy-xxl-5 { - --bs-gutter-y: 3rem; - } -} -.d-inline { - display: inline !important; -} - -.d-inline-block { - display: inline-block !important; -} - -.d-block { - display: block !important; -} - -.d-grid { - display: grid !important; -} - -.d-inline-grid { - display: inline-grid !important; -} - -.d-table { - display: table !important; -} - -.d-table-row { - display: table-row !important; -} - -.d-table-cell { - display: table-cell !important; -} - -.d-flex { - display: flex !important; -} - -.d-inline-flex { - display: inline-flex !important; -} - -.d-none { - display: none !important; -} - -.flex-fill { - flex: 1 1 auto !important; -} - -.flex-row { - flex-direction: row !important; -} - -.flex-column { - flex-direction: column !important; -} - -.flex-row-reverse { - flex-direction: row-reverse !important; -} - -.flex-column-reverse { - flex-direction: column-reverse !important; -} - -.flex-grow-0 { - flex-grow: 0 !important; -} - -.flex-grow-1 { - flex-grow: 1 !important; -} - -.flex-shrink-0 { - flex-shrink: 0 !important; -} - -.flex-shrink-1 { - flex-shrink: 1 !important; -} - -.flex-wrap { - flex-wrap: wrap !important; -} - -.flex-nowrap { - flex-wrap: nowrap !important; -} - -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important; -} - -.justify-content-start { - justify-content: flex-start !important; -} - -.justify-content-end { - justify-content: flex-end !important; -} - -.justify-content-center { - justify-content: center !important; -} - -.justify-content-between { - justify-content: space-between !important; -} - -.justify-content-around { - justify-content: space-around !important; -} - -.justify-content-evenly { - justify-content: space-evenly !important; -} - -.align-items-start { - align-items: flex-start !important; -} - -.align-items-end { - align-items: flex-end !important; -} - -.align-items-center { - align-items: center !important; -} - -.align-items-baseline { - align-items: baseline !important; -} - -.align-items-stretch { - align-items: stretch !important; -} - -.align-content-start { - align-content: flex-start !important; -} - -.align-content-end { - align-content: flex-end !important; -} - -.align-content-center { - align-content: center !important; -} - -.align-content-between { - align-content: space-between !important; -} - -.align-content-around { - align-content: space-around !important; -} - -.align-content-stretch { - align-content: stretch !important; -} - -.align-self-auto { - align-self: auto !important; -} - -.align-self-start { - align-self: flex-start !important; -} - -.align-self-end { - align-self: flex-end !important; -} - -.align-self-center { - align-self: center !important; -} - -.align-self-baseline { - align-self: baseline !important; -} - -.align-self-stretch { - align-self: stretch !important; -} - -.order-first { - order: -1 !important; -} - -.order-0 { - order: 0 !important; -} - -.order-1 { - order: 1 !important; -} - -.order-2 { - order: 2 !important; -} - -.order-3 { - order: 3 !important; -} - -.order-4 { - order: 4 !important; -} - -.order-5 { - order: 5 !important; -} - -.order-last { - order: 6 !important; -} - -.m-0 { - margin: 0 !important; -} - -.m-1 { - margin: 0.25rem !important; -} - -.m-2 { - margin: 0.5rem !important; -} - -.m-3 { - margin: 1rem !important; -} - -.m-4 { - margin: 1.5rem !important; -} - -.m-5 { - margin: 3rem !important; -} - -.m-auto { - margin: auto !important; -} - -.mx-0 { - margin-right: 0 !important; - margin-left: 0 !important; -} - -.mx-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; -} - -.mx-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; -} - -.mx-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; -} - -.mx-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; -} - -.mx-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; -} - -.mx-auto { - margin-right: auto !important; - margin-left: auto !important; -} - -.my-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -.my-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; -} - -.my-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; -} - -.my-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; -} - -.my-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; -} - -.my-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; -} - -.my-auto { - margin-top: auto !important; - margin-bottom: auto !important; -} - -.mt-0 { - margin-top: 0 !important; -} - -.mt-1 { - margin-top: 0.25rem !important; -} - -.mt-2 { - margin-top: 0.5rem !important; -} - -.mt-3 { - margin-top: 1rem !important; -} - -.mt-4 { - margin-top: 1.5rem !important; -} - -.mt-5 { - margin-top: 3rem !important; -} - -.mt-auto { - margin-top: auto !important; -} - -.me-0 { - margin-right: 0 !important; -} - -.me-1 { - margin-right: 0.25rem !important; -} - -.me-2 { - margin-right: 0.5rem !important; -} - -.me-3 { - margin-right: 1rem !important; -} - -.me-4 { - margin-right: 1.5rem !important; -} - -.me-5 { - margin-right: 3rem !important; -} - -.me-auto { - margin-right: auto !important; -} - -.mb-0 { - margin-bottom: 0 !important; -} - -.mb-1 { - margin-bottom: 0.25rem !important; -} - -.mb-2 { - margin-bottom: 0.5rem !important; -} - -.mb-3 { - margin-bottom: 1rem !important; -} - -.mb-4 { - margin-bottom: 1.5rem !important; -} - -.mb-5 { - margin-bottom: 3rem !important; -} - -.mb-auto { - margin-bottom: auto !important; -} - -.ms-0 { - margin-left: 0 !important; -} - -.ms-1 { - margin-left: 0.25rem !important; -} - -.ms-2 { - margin-left: 0.5rem !important; -} - -.ms-3 { - margin-left: 1rem !important; -} - -.ms-4 { - margin-left: 1.5rem !important; -} - -.ms-5 { - margin-left: 3rem !important; -} - -.ms-auto { - margin-left: auto !important; -} - -.p-0 { - padding: 0 !important; -} - -.p-1 { - padding: 0.25rem !important; -} - -.p-2 { - padding: 0.5rem !important; -} - -.p-3 { - padding: 1rem !important; -} - -.p-4 { - padding: 1.5rem !important; -} - -.p-5 { - padding: 3rem !important; -} - -.px-0 { - padding-right: 0 !important; - padding-left: 0 !important; -} - -.px-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; -} - -.px-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; -} - -.px-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; -} - -.px-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; -} - -.px-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; -} - -.py-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; -} - -.py-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; -} - -.py-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; -} - -.py-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; -} - -.py-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; -} - -.py-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; -} - -.pt-0 { - padding-top: 0 !important; -} - -.pt-1 { - padding-top: 0.25rem !important; -} - -.pt-2 { - padding-top: 0.5rem !important; -} - -.pt-3 { - padding-top: 1rem !important; -} - -.pt-4 { - padding-top: 1.5rem !important; -} - -.pt-5 { - padding-top: 3rem !important; -} - -.pe-0 { - padding-right: 0 !important; -} - -.pe-1 { - padding-right: 0.25rem !important; -} - -.pe-2 { - padding-right: 0.5rem !important; -} - -.pe-3 { - padding-right: 1rem !important; -} - -.pe-4 { - padding-right: 1.5rem !important; -} - -.pe-5 { - padding-right: 3rem !important; -} - -.pb-0 { - padding-bottom: 0 !important; -} - -.pb-1 { - padding-bottom: 0.25rem !important; -} - -.pb-2 { - padding-bottom: 0.5rem !important; -} - -.pb-3, blockquote blockquote > p { - padding-bottom: 1rem !important; -} - -.pb-4 { - padding-bottom: 1.5rem !important; -} - -.pb-5 { - padding-bottom: 3rem !important; -} - -.ps-0 { - padding-left: 0 !important; -} - -.ps-1 { - padding-left: 0.25rem !important; -} - -.ps-2 { - padding-left: 0.5rem !important; -} - -.ps-3 { - padding-left: 1rem !important; -} - -.ps-4 { - padding-left: 1.5rem !important; -} - -.ps-5 { - padding-left: 3rem !important; -} - -@media (min-width: 576px) { - .d-sm-inline { - display: inline !important; - } - .d-sm-inline-block { - display: inline-block !important; - } - .d-sm-block { - display: block !important; - } - .d-sm-grid { - display: grid !important; - } - .d-sm-inline-grid { - display: inline-grid !important; - } - .d-sm-table { - display: table !important; - } - .d-sm-table-row { - display: table-row !important; - } - .d-sm-table-cell { - display: table-cell !important; - } - .d-sm-flex { - display: flex !important; - } - .d-sm-inline-flex { - display: inline-flex !important; - } - .d-sm-none { - display: none !important; - } - .flex-sm-fill { - flex: 1 1 auto !important; - } - .flex-sm-row { - flex-direction: row !important; - } - .flex-sm-column { - flex-direction: column !important; - } - .flex-sm-row-reverse { - flex-direction: row-reverse !important; - } - .flex-sm-column-reverse { - flex-direction: column-reverse !important; - } - .flex-sm-grow-0 { - flex-grow: 0 !important; - } - .flex-sm-grow-1 { - flex-grow: 1 !important; - } - .flex-sm-shrink-0 { - flex-shrink: 0 !important; - } - .flex-sm-shrink-1 { - flex-shrink: 1 !important; - } - .flex-sm-wrap { - flex-wrap: wrap !important; - } - .flex-sm-nowrap { - flex-wrap: nowrap !important; - } - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-sm-start { - justify-content: flex-start !important; - } - .justify-content-sm-end { - justify-content: flex-end !important; - } - .justify-content-sm-center { - justify-content: center !important; - } - .justify-content-sm-between { - justify-content: space-between !important; - } - .justify-content-sm-around { - justify-content: space-around !important; - } - .justify-content-sm-evenly { - justify-content: space-evenly !important; - } - .align-items-sm-start { - align-items: flex-start !important; - } - .align-items-sm-end { - align-items: flex-end !important; - } - .align-items-sm-center { - align-items: center !important; - } - .align-items-sm-baseline { - align-items: baseline !important; - } - .align-items-sm-stretch { - align-items: stretch !important; - } - .align-content-sm-start { - align-content: flex-start !important; - } - .align-content-sm-end { - align-content: flex-end !important; - } - .align-content-sm-center { - align-content: center !important; - } - .align-content-sm-between { - align-content: space-between !important; - } - .align-content-sm-around { - align-content: space-around !important; - } - .align-content-sm-stretch { - align-content: stretch !important; - } - .align-self-sm-auto { - align-self: auto !important; - } - .align-self-sm-start { - align-self: flex-start !important; - } - .align-self-sm-end { - align-self: flex-end !important; - } - .align-self-sm-center { - align-self: center !important; - } - .align-self-sm-baseline { - align-self: baseline !important; - } - .align-self-sm-stretch { - align-self: stretch !important; - } - .order-sm-first { - order: -1 !important; - } - .order-sm-0 { - order: 0 !important; - } - .order-sm-1 { - order: 1 !important; - } - .order-sm-2 { - order: 2 !important; - } - .order-sm-3 { - order: 3 !important; - } - .order-sm-4 { - order: 4 !important; - } - .order-sm-5 { - order: 5 !important; - } - .order-sm-last { - order: 6 !important; - } - .m-sm-0 { - margin: 0 !important; - } - .m-sm-1 { - margin: 0.25rem !important; - } - .m-sm-2 { - margin: 0.5rem !important; - } - .m-sm-3 { - margin: 1rem !important; - } - .m-sm-4 { - margin: 1.5rem !important; - } - .m-sm-5 { - margin: 3rem !important; - } - .m-sm-auto { - margin: auto !important; - } - .mx-sm-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-sm-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-sm-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-sm-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-sm-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-sm-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-sm-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-sm-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-sm-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-sm-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-sm-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-sm-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-sm-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-sm-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-sm-0 { - margin-top: 0 !important; - } - .mt-sm-1 { - margin-top: 0.25rem !important; - } - .mt-sm-2 { - margin-top: 0.5rem !important; - } - .mt-sm-3 { - margin-top: 1rem !important; - } - .mt-sm-4 { - margin-top: 1.5rem !important; - } - .mt-sm-5 { - margin-top: 3rem !important; - } - .mt-sm-auto { - margin-top: auto !important; - } - .me-sm-0 { - margin-right: 0 !important; - } - .me-sm-1 { - margin-right: 0.25rem !important; - } - .me-sm-2 { - margin-right: 0.5rem !important; - } - .me-sm-3 { - margin-right: 1rem !important; - } - .me-sm-4 { - margin-right: 1.5rem !important; - } - .me-sm-5 { - margin-right: 3rem !important; - } - .me-sm-auto { - margin-right: auto !important; - } - .mb-sm-0 { - margin-bottom: 0 !important; - } - .mb-sm-1 { - margin-bottom: 0.25rem !important; - } - .mb-sm-2 { - margin-bottom: 0.5rem !important; - } - .mb-sm-3 { - margin-bottom: 1rem !important; - } - .mb-sm-4 { - margin-bottom: 1.5rem !important; - } - .mb-sm-5 { - margin-bottom: 3rem !important; - } - .mb-sm-auto { - margin-bottom: auto !important; - } - .ms-sm-0 { - margin-left: 0 !important; - } - .ms-sm-1 { - margin-left: 0.25rem !important; - } - .ms-sm-2 { - margin-left: 0.5rem !important; - } - .ms-sm-3 { - margin-left: 1rem !important; - } - .ms-sm-4 { - margin-left: 1.5rem !important; - } - .ms-sm-5 { - margin-left: 3rem !important; - } - .ms-sm-auto { - margin-left: auto !important; - } - .p-sm-0 { - padding: 0 !important; - } - .p-sm-1 { - padding: 0.25rem !important; - } - .p-sm-2 { - padding: 0.5rem !important; - } - .p-sm-3 { - padding: 1rem !important; - } - .p-sm-4 { - padding: 1.5rem !important; - } - .p-sm-5 { - padding: 3rem !important; - } - .px-sm-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-sm-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-sm-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-sm-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-sm-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-sm-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-sm-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-sm-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-sm-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-sm-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-sm-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-sm-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-sm-0 { - padding-top: 0 !important; - } - .pt-sm-1 { - padding-top: 0.25rem !important; - } - .pt-sm-2 { - padding-top: 0.5rem !important; - } - .pt-sm-3 { - padding-top: 1rem !important; - } - .pt-sm-4 { - padding-top: 1.5rem !important; - } - .pt-sm-5 { - padding-top: 3rem !important; - } - .pe-sm-0 { - padding-right: 0 !important; - } - .pe-sm-1 { - padding-right: 0.25rem !important; - } - .pe-sm-2 { - padding-right: 0.5rem !important; - } - .pe-sm-3 { - padding-right: 1rem !important; - } - .pe-sm-4 { - padding-right: 1.5rem !important; - } - .pe-sm-5 { - padding-right: 3rem !important; - } - .pb-sm-0 { - padding-bottom: 0 !important; - } - .pb-sm-1 { - padding-bottom: 0.25rem !important; - } - .pb-sm-2 { - padding-bottom: 0.5rem !important; - } - .pb-sm-3 { - padding-bottom: 1rem !important; - } - .pb-sm-4 { - padding-bottom: 1.5rem !important; - } - .pb-sm-5 { - padding-bottom: 3rem !important; - } - .ps-sm-0 { - padding-left: 0 !important; - } - .ps-sm-1 { - padding-left: 0.25rem !important; - } - .ps-sm-2 { - padding-left: 0.5rem !important; - } - .ps-sm-3 { - padding-left: 1rem !important; - } - .ps-sm-4 { - padding-left: 1.5rem !important; - } - .ps-sm-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 768px) { - .d-md-inline { - display: inline !important; - } - .d-md-inline-block { - display: inline-block !important; - } - .d-md-block { - display: block !important; - } - .d-md-grid { - display: grid !important; - } - .d-md-inline-grid { - display: inline-grid !important; - } - .d-md-table { - display: table !important; - } - .d-md-table-row { - display: table-row !important; - } - .d-md-table-cell { - display: table-cell !important; - } - .d-md-flex { - display: flex !important; - } - .d-md-inline-flex { - display: inline-flex !important; - } - .d-md-none { - display: none !important; - } - .flex-md-fill { - flex: 1 1 auto !important; - } - .flex-md-row { - flex-direction: row !important; - } - .flex-md-column { - flex-direction: column !important; - } - .flex-md-row-reverse { - flex-direction: row-reverse !important; - } - .flex-md-column-reverse { - flex-direction: column-reverse !important; - } - .flex-md-grow-0 { - flex-grow: 0 !important; - } - .flex-md-grow-1 { - flex-grow: 1 !important; - } - .flex-md-shrink-0 { - flex-shrink: 0 !important; - } - .flex-md-shrink-1 { - flex-shrink: 1 !important; - } - .flex-md-wrap { - flex-wrap: wrap !important; - } - .flex-md-nowrap { - flex-wrap: nowrap !important; - } - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-md-start { - justify-content: flex-start !important; - } - .justify-content-md-end { - justify-content: flex-end !important; - } - .justify-content-md-center { - justify-content: center !important; - } - .justify-content-md-between { - justify-content: space-between !important; - } - .justify-content-md-around { - justify-content: space-around !important; - } - .justify-content-md-evenly { - justify-content: space-evenly !important; - } - .align-items-md-start { - align-items: flex-start !important; - } - .align-items-md-end { - align-items: flex-end !important; - } - .align-items-md-center { - align-items: center !important; - } - .align-items-md-baseline { - align-items: baseline !important; - } - .align-items-md-stretch { - align-items: stretch !important; - } - .align-content-md-start { - align-content: flex-start !important; - } - .align-content-md-end { - align-content: flex-end !important; - } - .align-content-md-center { - align-content: center !important; - } - .align-content-md-between { - align-content: space-between !important; - } - .align-content-md-around { - align-content: space-around !important; - } - .align-content-md-stretch { - align-content: stretch !important; - } - .align-self-md-auto { - align-self: auto !important; - } - .align-self-md-start { - align-self: flex-start !important; - } - .align-self-md-end { - align-self: flex-end !important; - } - .align-self-md-center { - align-self: center !important; - } - .align-self-md-baseline { - align-self: baseline !important; - } - .align-self-md-stretch { - align-self: stretch !important; - } - .order-md-first { - order: -1 !important; - } - .order-md-0 { - order: 0 !important; - } - .order-md-1 { - order: 1 !important; - } - .order-md-2 { - order: 2 !important; - } - .order-md-3 { - order: 3 !important; - } - .order-md-4 { - order: 4 !important; - } - .order-md-5 { - order: 5 !important; - } - .order-md-last { - order: 6 !important; - } - .m-md-0 { - margin: 0 !important; - } - .m-md-1 { - margin: 0.25rem !important; - } - .m-md-2 { - margin: 0.5rem !important; - } - .m-md-3 { - margin: 1rem !important; - } - .m-md-4 { - margin: 1.5rem !important; - } - .m-md-5 { - margin: 3rem !important; - } - .m-md-auto { - margin: auto !important; - } - .mx-md-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-md-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-md-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-md-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-md-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-md-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-md-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-md-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-md-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-md-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-md-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-md-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-md-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-md-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-md-0 { - margin-top: 0 !important; - } - .mt-md-1 { - margin-top: 0.25rem !important; - } - .mt-md-2 { - margin-top: 0.5rem !important; - } - .mt-md-3 { - margin-top: 1rem !important; - } - .mt-md-4 { - margin-top: 1.5rem !important; - } - .mt-md-5 { - margin-top: 3rem !important; - } - .mt-md-auto { - margin-top: auto !important; - } - .me-md-0 { - margin-right: 0 !important; - } - .me-md-1 { - margin-right: 0.25rem !important; - } - .me-md-2 { - margin-right: 0.5rem !important; - } - .me-md-3 { - margin-right: 1rem !important; - } - .me-md-4 { - margin-right: 1.5rem !important; - } - .me-md-5 { - margin-right: 3rem !important; - } - .me-md-auto { - margin-right: auto !important; - } - .mb-md-0 { - margin-bottom: 0 !important; - } - .mb-md-1 { - margin-bottom: 0.25rem !important; - } - .mb-md-2 { - margin-bottom: 0.5rem !important; - } - .mb-md-3 { - margin-bottom: 1rem !important; - } - .mb-md-4 { - margin-bottom: 1.5rem !important; - } - .mb-md-5 { - margin-bottom: 3rem !important; - } - .mb-md-auto { - margin-bottom: auto !important; - } - .ms-md-0 { - margin-left: 0 !important; - } - .ms-md-1 { - margin-left: 0.25rem !important; - } - .ms-md-2 { - margin-left: 0.5rem !important; - } - .ms-md-3 { - margin-left: 1rem !important; - } - .ms-md-4 { - margin-left: 1.5rem !important; - } - .ms-md-5 { - margin-left: 3rem !important; - } - .ms-md-auto { - margin-left: auto !important; - } - .p-md-0 { - padding: 0 !important; - } - .p-md-1 { - padding: 0.25rem !important; - } - .p-md-2 { - padding: 0.5rem !important; - } - .p-md-3 { - padding: 1rem !important; - } - .p-md-4 { - padding: 1.5rem !important; - } - .p-md-5 { - padding: 3rem !important; - } - .px-md-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-md-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-md-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-md-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-md-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-md-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-md-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-md-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-md-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-md-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-md-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-md-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-md-0 { - padding-top: 0 !important; - } - .pt-md-1 { - padding-top: 0.25rem !important; - } - .pt-md-2 { - padding-top: 0.5rem !important; - } - .pt-md-3 { - padding-top: 1rem !important; - } - .pt-md-4 { - padding-top: 1.5rem !important; - } - .pt-md-5 { - padding-top: 3rem !important; - } - .pe-md-0 { - padding-right: 0 !important; - } - .pe-md-1 { - padding-right: 0.25rem !important; - } - .pe-md-2 { - padding-right: 0.5rem !important; - } - .pe-md-3 { - padding-right: 1rem !important; - } - .pe-md-4 { - padding-right: 1.5rem !important; - } - .pe-md-5 { - padding-right: 3rem !important; - } - .pb-md-0 { - padding-bottom: 0 !important; - } - .pb-md-1 { - padding-bottom: 0.25rem !important; - } - .pb-md-2 { - padding-bottom: 0.5rem !important; - } - .pb-md-3 { - padding-bottom: 1rem !important; - } - .pb-md-4 { - padding-bottom: 1.5rem !important; - } - .pb-md-5 { - padding-bottom: 3rem !important; - } - .ps-md-0 { - padding-left: 0 !important; - } - .ps-md-1 { - padding-left: 0.25rem !important; - } - .ps-md-2 { - padding-left: 0.5rem !important; - } - .ps-md-3 { - padding-left: 1rem !important; - } - .ps-md-4 { - padding-left: 1.5rem !important; - } - .ps-md-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 992px) { - .d-lg-inline { - display: inline !important; - } - .d-lg-inline-block { - display: inline-block !important; - } - .d-lg-block { - display: block !important; - } - .d-lg-grid { - display: grid !important; - } - .d-lg-inline-grid { - display: inline-grid !important; - } - .d-lg-table { - display: table !important; - } - .d-lg-table-row { - display: table-row !important; - } - .d-lg-table-cell { - display: table-cell !important; - } - .d-lg-flex { - display: flex !important; - } - .d-lg-inline-flex { - display: inline-flex !important; - } - .d-lg-none { - display: none !important; - } - .flex-lg-fill { - flex: 1 1 auto !important; - } - .flex-lg-row { - flex-direction: row !important; - } - .flex-lg-column { - flex-direction: column !important; - } - .flex-lg-row-reverse { - flex-direction: row-reverse !important; - } - .flex-lg-column-reverse { - flex-direction: column-reverse !important; - } - .flex-lg-grow-0 { - flex-grow: 0 !important; - } - .flex-lg-grow-1 { - flex-grow: 1 !important; - } - .flex-lg-shrink-0 { - flex-shrink: 0 !important; - } - .flex-lg-shrink-1 { - flex-shrink: 1 !important; - } - .flex-lg-wrap { - flex-wrap: wrap !important; - } - .flex-lg-nowrap { - flex-wrap: nowrap !important; - } - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-lg-start { - justify-content: flex-start !important; - } - .justify-content-lg-end { - justify-content: flex-end !important; - } - .justify-content-lg-center { - justify-content: center !important; - } - .justify-content-lg-between { - justify-content: space-between !important; - } - .justify-content-lg-around { - justify-content: space-around !important; - } - .justify-content-lg-evenly { - justify-content: space-evenly !important; - } - .align-items-lg-start { - align-items: flex-start !important; - } - .align-items-lg-end { - align-items: flex-end !important; - } - .align-items-lg-center { - align-items: center !important; - } - .align-items-lg-baseline { - align-items: baseline !important; - } - .align-items-lg-stretch { - align-items: stretch !important; - } - .align-content-lg-start { - align-content: flex-start !important; - } - .align-content-lg-end { - align-content: flex-end !important; - } - .align-content-lg-center { - align-content: center !important; - } - .align-content-lg-between { - align-content: space-between !important; - } - .align-content-lg-around { - align-content: space-around !important; - } - .align-content-lg-stretch { - align-content: stretch !important; - } - .align-self-lg-auto { - align-self: auto !important; - } - .align-self-lg-start { - align-self: flex-start !important; - } - .align-self-lg-end { - align-self: flex-end !important; - } - .align-self-lg-center { - align-self: center !important; - } - .align-self-lg-baseline { - align-self: baseline !important; - } - .align-self-lg-stretch { - align-self: stretch !important; - } - .order-lg-first { - order: -1 !important; - } - .order-lg-0 { - order: 0 !important; - } - .order-lg-1 { - order: 1 !important; - } - .order-lg-2 { - order: 2 !important; - } - .order-lg-3 { - order: 3 !important; - } - .order-lg-4 { - order: 4 !important; - } - .order-lg-5 { - order: 5 !important; - } - .order-lg-last { - order: 6 !important; - } - .m-lg-0 { - margin: 0 !important; - } - .m-lg-1 { - margin: 0.25rem !important; - } - .m-lg-2 { - margin: 0.5rem !important; - } - .m-lg-3 { - margin: 1rem !important; - } - .m-lg-4 { - margin: 1.5rem !important; - } - .m-lg-5 { - margin: 3rem !important; - } - .m-lg-auto { - margin: auto !important; - } - .mx-lg-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-lg-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-lg-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-lg-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-lg-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-lg-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-lg-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-lg-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-lg-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-lg-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-lg-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-lg-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-lg-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-lg-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-lg-0 { - margin-top: 0 !important; - } - .mt-lg-1 { - margin-top: 0.25rem !important; - } - .mt-lg-2 { - margin-top: 0.5rem !important; - } - .mt-lg-3 { - margin-top: 1rem !important; - } - .mt-lg-4 { - margin-top: 1.5rem !important; - } - .mt-lg-5 { - margin-top: 3rem !important; - } - .mt-lg-auto { - margin-top: auto !important; - } - .me-lg-0 { - margin-right: 0 !important; - } - .me-lg-1 { - margin-right: 0.25rem !important; - } - .me-lg-2 { - margin-right: 0.5rem !important; - } - .me-lg-3 { - margin-right: 1rem !important; - } - .me-lg-4 { - margin-right: 1.5rem !important; - } - .me-lg-5 { - margin-right: 3rem !important; - } - .me-lg-auto { - margin-right: auto !important; - } - .mb-lg-0 { - margin-bottom: 0 !important; - } - .mb-lg-1 { - margin-bottom: 0.25rem !important; - } - .mb-lg-2 { - margin-bottom: 0.5rem !important; - } - .mb-lg-3 { - margin-bottom: 1rem !important; - } - .mb-lg-4 { - margin-bottom: 1.5rem !important; - } - .mb-lg-5 { - margin-bottom: 3rem !important; - } - .mb-lg-auto { - margin-bottom: auto !important; - } - .ms-lg-0 { - margin-left: 0 !important; - } - .ms-lg-1 { - margin-left: 0.25rem !important; - } - .ms-lg-2 { - margin-left: 0.5rem !important; - } - .ms-lg-3 { - margin-left: 1rem !important; - } - .ms-lg-4 { - margin-left: 1.5rem !important; - } - .ms-lg-5 { - margin-left: 3rem !important; - } - .ms-lg-auto { - margin-left: auto !important; - } - .p-lg-0 { - padding: 0 !important; - } - .p-lg-1 { - padding: 0.25rem !important; - } - .p-lg-2 { - padding: 0.5rem !important; - } - .p-lg-3 { - padding: 1rem !important; - } - .p-lg-4 { - padding: 1.5rem !important; - } - .p-lg-5 { - padding: 3rem !important; - } - .px-lg-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-lg-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-lg-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-lg-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-lg-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-lg-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-lg-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-lg-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-lg-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-lg-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-lg-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-lg-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-lg-0 { - padding-top: 0 !important; - } - .pt-lg-1 { - padding-top: 0.25rem !important; - } - .pt-lg-2 { - padding-top: 0.5rem !important; - } - .pt-lg-3 { - padding-top: 1rem !important; - } - .pt-lg-4 { - padding-top: 1.5rem !important; - } - .pt-lg-5 { - padding-top: 3rem !important; - } - .pe-lg-0 { - padding-right: 0 !important; - } - .pe-lg-1 { - padding-right: 0.25rem !important; - } - .pe-lg-2 { - padding-right: 0.5rem !important; - } - .pe-lg-3 { - padding-right: 1rem !important; - } - .pe-lg-4 { - padding-right: 1.5rem !important; - } - .pe-lg-5 { - padding-right: 3rem !important; - } - .pb-lg-0 { - padding-bottom: 0 !important; - } - .pb-lg-1 { - padding-bottom: 0.25rem !important; - } - .pb-lg-2 { - padding-bottom: 0.5rem !important; - } - .pb-lg-3 { - padding-bottom: 1rem !important; - } - .pb-lg-4 { - padding-bottom: 1.5rem !important; - } - .pb-lg-5 { - padding-bottom: 3rem !important; - } - .ps-lg-0 { - padding-left: 0 !important; - } - .ps-lg-1 { - padding-left: 0.25rem !important; - } - .ps-lg-2 { - padding-left: 0.5rem !important; - } - .ps-lg-3 { - padding-left: 1rem !important; - } - .ps-lg-4 { - padding-left: 1.5rem !important; - } - .ps-lg-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 1200px) { - .d-xl-inline { - display: inline !important; - } - .d-xl-inline-block { - display: inline-block !important; - } - .d-xl-block { - display: block !important; - } - .d-xl-grid { - display: grid !important; - } - .d-xl-inline-grid { - display: inline-grid !important; - } - .d-xl-table { - display: table !important; - } - .d-xl-table-row { - display: table-row !important; - } - .d-xl-table-cell { - display: table-cell !important; - } - .d-xl-flex { - display: flex !important; - } - .d-xl-inline-flex { - display: inline-flex !important; - } - .d-xl-none { - display: none !important; - } - .flex-xl-fill { - flex: 1 1 auto !important; - } - .flex-xl-row { - flex-direction: row !important; - } - .flex-xl-column { - flex-direction: column !important; - } - .flex-xl-row-reverse { - flex-direction: row-reverse !important; - } - .flex-xl-column-reverse { - flex-direction: column-reverse !important; - } - .flex-xl-grow-0 { - flex-grow: 0 !important; - } - .flex-xl-grow-1 { - flex-grow: 1 !important; - } - .flex-xl-shrink-0 { - flex-shrink: 0 !important; - } - .flex-xl-shrink-1 { - flex-shrink: 1 !important; - } - .flex-xl-wrap { - flex-wrap: wrap !important; - } - .flex-xl-nowrap { - flex-wrap: nowrap !important; - } - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-xl-start { - justify-content: flex-start !important; - } - .justify-content-xl-end { - justify-content: flex-end !important; - } - .justify-content-xl-center { - justify-content: center !important; - } - .justify-content-xl-between { - justify-content: space-between !important; - } - .justify-content-xl-around { - justify-content: space-around !important; - } - .justify-content-xl-evenly { - justify-content: space-evenly !important; - } - .align-items-xl-start { - align-items: flex-start !important; - } - .align-items-xl-end { - align-items: flex-end !important; - } - .align-items-xl-center { - align-items: center !important; - } - .align-items-xl-baseline { - align-items: baseline !important; - } - .align-items-xl-stretch { - align-items: stretch !important; - } - .align-content-xl-start { - align-content: flex-start !important; - } - .align-content-xl-end { - align-content: flex-end !important; - } - .align-content-xl-center { - align-content: center !important; - } - .align-content-xl-between { - align-content: space-between !important; - } - .align-content-xl-around { - align-content: space-around !important; - } - .align-content-xl-stretch { - align-content: stretch !important; - } - .align-self-xl-auto { - align-self: auto !important; - } - .align-self-xl-start { - align-self: flex-start !important; - } - .align-self-xl-end { - align-self: flex-end !important; - } - .align-self-xl-center { - align-self: center !important; - } - .align-self-xl-baseline { - align-self: baseline !important; - } - .align-self-xl-stretch { - align-self: stretch !important; - } - .order-xl-first { - order: -1 !important; - } - .order-xl-0 { - order: 0 !important; - } - .order-xl-1 { - order: 1 !important; - } - .order-xl-2 { - order: 2 !important; - } - .order-xl-3 { - order: 3 !important; - } - .order-xl-4 { - order: 4 !important; - } - .order-xl-5 { - order: 5 !important; - } - .order-xl-last { - order: 6 !important; - } - .m-xl-0 { - margin: 0 !important; - } - .m-xl-1 { - margin: 0.25rem !important; - } - .m-xl-2 { - margin: 0.5rem !important; - } - .m-xl-3 { - margin: 1rem !important; - } - .m-xl-4 { - margin: 1.5rem !important; - } - .m-xl-5 { - margin: 3rem !important; - } - .m-xl-auto { - margin: auto !important; - } - .mx-xl-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-xl-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-xl-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-xl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-xl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-xl-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-xl-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-xl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-xl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-xl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-xl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-xl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-xl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-xl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-xl-0 { - margin-top: 0 !important; - } - .mt-xl-1 { - margin-top: 0.25rem !important; - } - .mt-xl-2 { - margin-top: 0.5rem !important; - } - .mt-xl-3 { - margin-top: 1rem !important; - } - .mt-xl-4 { - margin-top: 1.5rem !important; - } - .mt-xl-5 { - margin-top: 3rem !important; - } - .mt-xl-auto { - margin-top: auto !important; - } - .me-xl-0 { - margin-right: 0 !important; - } - .me-xl-1 { - margin-right: 0.25rem !important; - } - .me-xl-2 { - margin-right: 0.5rem !important; - } - .me-xl-3 { - margin-right: 1rem !important; - } - .me-xl-4 { - margin-right: 1.5rem !important; - } - .me-xl-5 { - margin-right: 3rem !important; - } - .me-xl-auto { - margin-right: auto !important; - } - .mb-xl-0 { - margin-bottom: 0 !important; - } - .mb-xl-1 { - margin-bottom: 0.25rem !important; - } - .mb-xl-2 { - margin-bottom: 0.5rem !important; - } - .mb-xl-3 { - margin-bottom: 1rem !important; - } - .mb-xl-4 { - margin-bottom: 1.5rem !important; - } - .mb-xl-5 { - margin-bottom: 3rem !important; - } - .mb-xl-auto { - margin-bottom: auto !important; - } - .ms-xl-0 { - margin-left: 0 !important; - } - .ms-xl-1 { - margin-left: 0.25rem !important; - } - .ms-xl-2 { - margin-left: 0.5rem !important; - } - .ms-xl-3 { - margin-left: 1rem !important; - } - .ms-xl-4 { - margin-left: 1.5rem !important; - } - .ms-xl-5 { - margin-left: 3rem !important; - } - .ms-xl-auto { - margin-left: auto !important; - } - .p-xl-0 { - padding: 0 !important; - } - .p-xl-1 { - padding: 0.25rem !important; - } - .p-xl-2 { - padding: 0.5rem !important; - } - .p-xl-3 { - padding: 1rem !important; - } - .p-xl-4 { - padding: 1.5rem !important; - } - .p-xl-5 { - padding: 3rem !important; - } - .px-xl-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-xl-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-xl-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-xl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-xl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-xl-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-xl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-xl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-xl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-xl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-xl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-xl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-xl-0 { - padding-top: 0 !important; - } - .pt-xl-1 { - padding-top: 0.25rem !important; - } - .pt-xl-2 { - padding-top: 0.5rem !important; - } - .pt-xl-3 { - padding-top: 1rem !important; - } - .pt-xl-4 { - padding-top: 1.5rem !important; - } - .pt-xl-5 { - padding-top: 3rem !important; - } - .pe-xl-0 { - padding-right: 0 !important; - } - .pe-xl-1 { - padding-right: 0.25rem !important; - } - .pe-xl-2 { - padding-right: 0.5rem !important; - } - .pe-xl-3 { - padding-right: 1rem !important; - } - .pe-xl-4 { - padding-right: 1.5rem !important; - } - .pe-xl-5 { - padding-right: 3rem !important; - } - .pb-xl-0 { - padding-bottom: 0 !important; - } - .pb-xl-1 { - padding-bottom: 0.25rem !important; - } - .pb-xl-2 { - padding-bottom: 0.5rem !important; - } - .pb-xl-3 { - padding-bottom: 1rem !important; - } - .pb-xl-4 { - padding-bottom: 1.5rem !important; - } - .pb-xl-5 { - padding-bottom: 3rem !important; - } - .ps-xl-0 { - padding-left: 0 !important; - } - .ps-xl-1 { - padding-left: 0.25rem !important; - } - .ps-xl-2 { - padding-left: 0.5rem !important; - } - .ps-xl-3 { - padding-left: 1rem !important; - } - .ps-xl-4 { - padding-left: 1.5rem !important; - } - .ps-xl-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 1400px) { - .d-xxl-inline { - display: inline !important; - } - .d-xxl-inline-block { - display: inline-block !important; - } - .d-xxl-block { - display: block !important; - } - .d-xxl-grid { - display: grid !important; - } - .d-xxl-inline-grid { - display: inline-grid !important; - } - .d-xxl-table { - display: table !important; - } - .d-xxl-table-row { - display: table-row !important; - } - .d-xxl-table-cell { - display: table-cell !important; - } - .d-xxl-flex { - display: flex !important; - } - .d-xxl-inline-flex { - display: inline-flex !important; - } - .d-xxl-none { - display: none !important; - } - .flex-xxl-fill { - flex: 1 1 auto !important; - } - .flex-xxl-row { - flex-direction: row !important; - } - .flex-xxl-column { - flex-direction: column !important; - } - .flex-xxl-row-reverse { - flex-direction: row-reverse !important; - } - .flex-xxl-column-reverse { - flex-direction: column-reverse !important; - } - .flex-xxl-grow-0 { - flex-grow: 0 !important; - } - .flex-xxl-grow-1 { - flex-grow: 1 !important; - } - .flex-xxl-shrink-0 { - flex-shrink: 0 !important; - } - .flex-xxl-shrink-1 { - flex-shrink: 1 !important; - } - .flex-xxl-wrap { - flex-wrap: wrap !important; - } - .flex-xxl-nowrap { - flex-wrap: nowrap !important; - } - .flex-xxl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-xxl-start { - justify-content: flex-start !important; - } - .justify-content-xxl-end { - justify-content: flex-end !important; - } - .justify-content-xxl-center { - justify-content: center !important; - } - .justify-content-xxl-between { - justify-content: space-between !important; - } - .justify-content-xxl-around { - justify-content: space-around !important; - } - .justify-content-xxl-evenly { - justify-content: space-evenly !important; - } - .align-items-xxl-start { - align-items: flex-start !important; - } - .align-items-xxl-end { - align-items: flex-end !important; - } - .align-items-xxl-center { - align-items: center !important; - } - .align-items-xxl-baseline { - align-items: baseline !important; - } - .align-items-xxl-stretch { - align-items: stretch !important; - } - .align-content-xxl-start { - align-content: flex-start !important; - } - .align-content-xxl-end { - align-content: flex-end !important; - } - .align-content-xxl-center { - align-content: center !important; - } - .align-content-xxl-between { - align-content: space-between !important; - } - .align-content-xxl-around { - align-content: space-around !important; - } - .align-content-xxl-stretch { - align-content: stretch !important; - } - .align-self-xxl-auto { - align-self: auto !important; - } - .align-self-xxl-start { - align-self: flex-start !important; - } - .align-self-xxl-end { - align-self: flex-end !important; - } - .align-self-xxl-center { - align-self: center !important; - } - .align-self-xxl-baseline { - align-self: baseline !important; - } - .align-self-xxl-stretch { - align-self: stretch !important; - } - .order-xxl-first { - order: -1 !important; - } - .order-xxl-0 { - order: 0 !important; - } - .order-xxl-1 { - order: 1 !important; - } - .order-xxl-2 { - order: 2 !important; - } - .order-xxl-3 { - order: 3 !important; - } - .order-xxl-4 { - order: 4 !important; - } - .order-xxl-5 { - order: 5 !important; - } - .order-xxl-last { - order: 6 !important; - } - .m-xxl-0 { - margin: 0 !important; - } - .m-xxl-1 { - margin: 0.25rem !important; - } - .m-xxl-2 { - margin: 0.5rem !important; - } - .m-xxl-3 { - margin: 1rem !important; - } - .m-xxl-4 { - margin: 1.5rem !important; - } - .m-xxl-5 { - margin: 3rem !important; - } - .m-xxl-auto { - margin: auto !important; - } - .mx-xxl-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-xxl-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-xxl-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-xxl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-xxl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-xxl-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-xxl-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-xxl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-xxl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-xxl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-xxl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-xxl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-xxl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-xxl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-xxl-0 { - margin-top: 0 !important; - } - .mt-xxl-1 { - margin-top: 0.25rem !important; - } - .mt-xxl-2 { - margin-top: 0.5rem !important; - } - .mt-xxl-3 { - margin-top: 1rem !important; - } - .mt-xxl-4 { - margin-top: 1.5rem !important; - } - .mt-xxl-5 { - margin-top: 3rem !important; - } - .mt-xxl-auto { - margin-top: auto !important; - } - .me-xxl-0 { - margin-right: 0 !important; - } - .me-xxl-1 { - margin-right: 0.25rem !important; - } - .me-xxl-2 { - margin-right: 0.5rem !important; - } - .me-xxl-3 { - margin-right: 1rem !important; - } - .me-xxl-4 { - margin-right: 1.5rem !important; - } - .me-xxl-5 { - margin-right: 3rem !important; - } - .me-xxl-auto { - margin-right: auto !important; - } - .mb-xxl-0 { - margin-bottom: 0 !important; - } - .mb-xxl-1 { - margin-bottom: 0.25rem !important; - } - .mb-xxl-2 { - margin-bottom: 0.5rem !important; - } - .mb-xxl-3 { - margin-bottom: 1rem !important; - } - .mb-xxl-4 { - margin-bottom: 1.5rem !important; - } - .mb-xxl-5 { - margin-bottom: 3rem !important; - } - .mb-xxl-auto { - margin-bottom: auto !important; - } - .ms-xxl-0 { - margin-left: 0 !important; - } - .ms-xxl-1 { - margin-left: 0.25rem !important; - } - .ms-xxl-2 { - margin-left: 0.5rem !important; - } - .ms-xxl-3 { - margin-left: 1rem !important; - } - .ms-xxl-4 { - margin-left: 1.5rem !important; - } - .ms-xxl-5 { - margin-left: 3rem !important; - } - .ms-xxl-auto { - margin-left: auto !important; - } - .p-xxl-0 { - padding: 0 !important; - } - .p-xxl-1 { - padding: 0.25rem !important; - } - .p-xxl-2 { - padding: 0.5rem !important; - } - .p-xxl-3 { - padding: 1rem !important; - } - .p-xxl-4 { - padding: 1.5rem !important; - } - .p-xxl-5 { - padding: 3rem !important; - } - .px-xxl-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-xxl-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-xxl-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-xxl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-xxl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-xxl-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-xxl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-xxl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-xxl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-xxl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-xxl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-xxl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-xxl-0 { - padding-top: 0 !important; - } - .pt-xxl-1 { - padding-top: 0.25rem !important; - } - .pt-xxl-2 { - padding-top: 0.5rem !important; - } - .pt-xxl-3 { - padding-top: 1rem !important; - } - .pt-xxl-4 { - padding-top: 1.5rem !important; - } - .pt-xxl-5 { - padding-top: 3rem !important; - } - .pe-xxl-0 { - padding-right: 0 !important; - } - .pe-xxl-1 { - padding-right: 0.25rem !important; - } - .pe-xxl-2 { - padding-right: 0.5rem !important; - } - .pe-xxl-3 { - padding-right: 1rem !important; - } - .pe-xxl-4 { - padding-right: 1.5rem !important; - } - .pe-xxl-5 { - padding-right: 3rem !important; - } - .pb-xxl-0 { - padding-bottom: 0 !important; - } - .pb-xxl-1 { - padding-bottom: 0.25rem !important; - } - .pb-xxl-2 { - padding-bottom: 0.5rem !important; - } - .pb-xxl-3 { - padding-bottom: 1rem !important; - } - .pb-xxl-4 { - padding-bottom: 1.5rem !important; - } - .pb-xxl-5 { - padding-bottom: 3rem !important; - } - .ps-xxl-0 { - padding-left: 0 !important; - } - .ps-xxl-1 { - padding-left: 0.25rem !important; - } - .ps-xxl-2 { - padding-left: 0.5rem !important; - } - .ps-xxl-3 { - padding-left: 1rem !important; - } - .ps-xxl-4 { - padding-left: 1.5rem !important; - } - .ps-xxl-5 { - padding-left: 3rem !important; - } -} -@media print { - .d-print-inline { - display: inline !important; - } - .d-print-inline-block { - display: inline-block !important; - } - .d-print-block { - display: block !important; - } - .d-print-grid { - display: grid !important; - } - .d-print-inline-grid { - display: inline-grid !important; - } - .d-print-table { - display: table !important; - } - .d-print-table-row { - display: table-row !important; - } - .d-print-table-cell { - display: table-cell !important; - } - .d-print-flex { - display: flex !important; - } - .d-print-inline-flex { - display: inline-flex !important; - } - .d-print-none { - display: none !important; - } -} -/* stylelint-enable */ -/** - ** Copyright 2008-2024 Adam J. Jolicoeur - ** https://www.adamjolicoeur.com -**/ -/* -** Arrow animations from https://codepen.io/postor/pen/vYpNYg -*/ -.arrows { - width: 60px; - height: 72px; - position: absolute; - left: 50%; - margin-left: -30px; - bottom: 20px; -} - -.arrows path { - stroke: #bfe7fa; - fill: transparent; - stroke-width: 1px; - animation: arrow 2s infinite; - -webkit-animation: arrow 2s infinite; -} - -@keyframes arrow { - 0% { - opacity: 0; - } - 40% { - opacity: 1; - } - 80% { - opacity: 0; - } - 100% { - opacity: 0; - } -} -@-webkit-keyframes arrow /*Safari and Chrome*/ { - 0% { - opacity: 0; - } - 40% { - opacity: 1; - } - 80% { - opacity: 0; - } - 100% { - opacity: 0; - } -} -.arrows path.a1 { - animation-delay: -1s; - -webkit-animation-delay: -1s; /* Safari 和 Chrome */ -} - -.arrows path.a2 { - animation-delay: -0.5s; - -webkit-animation-delay: -0.5s; /* Safari 和 Chrome */ -} - -.arrows path.a3 { - animation-delay: 0s; - -webkit-animation-delay: 0s; /* Safari 和 Chrome */ -} - -.oswald-light { - font-family: "Oswald", sans-serif; - font-optical-sizing: auto; - font-weight: 300; - font-style: normal; -} - -.oswald-regular { - font-family: "Oswald", sans-serif; - font-optical-sizing: auto; - font-weight: 400; - font-style: normal; -} - -.oswald-medium { - font-family: "Oswald", sans-serif; - font-optical-sizing: auto; - font-weight: 500; - font-style: normal; -} - -.oswald-semibold { - font-family: "Oswald", sans-serif; - font-optical-sizing: auto; - font-weight: 600; - font-style: normal; -} - -.oswald-bold { - font-family: "Oswald", sans-serif; - font-optical-sizing: auto; - font-weight: 700; - font-style: normal; -} - -.lato-thin { - font-family: "Lato", sans-serif; - font-weight: 100; - font-style: normal; -} - -.lato-light { - font-family: "Lato", sans-serif; - font-weight: 300; - font-style: normal; -} - -.lato-regular { - font-family: "Lato", sans-serif; - font-weight: 400; - font-style: normal; -} - -.lato-bold { - font-family: "Lato", sans-serif; - font-weight: 700; - font-style: normal; -} - -.lato-black { - font-family: "Lato", sans-serif; - font-weight: 900; - font-style: normal; -} - -.lato-thin-italic { - font-family: "Lato", sans-serif; - font-weight: 100; - font-style: italic; -} - -.lato-light-italic { - font-family: "Lato", sans-serif; - font-weight: 300; - font-style: italic; -} - -.lato-regular-italic { - font-family: "Lato", sans-serif; - font-weight: 400; - font-style: italic; -} - -.lato-bold-italic { - font-family: "Lato", sans-serif; - font-weight: 700; - font-style: italic; -} - -.lato-black-italic { - font-family: "Lato", sans-serif; - font-weight: 900; - font-style: italic; -} - -:root { - --link-color-primary: #507687; - --link-color-primary-hover: #384B70; - --color-grey-50: #e8e8ec; - --color-grey-100: #f8f8f8; - --color-grey-200: #e3e3e3; - --color-grey-300: #bbb; - --color-grey-400: #949494; - --color-grey-500: #525759; - --color-grey-600: #424242; - --color-grey-800: #212529; - --color-grey-900: #010101; - --color-blue-50: #e6f4f1; - --color-blue-100: #bfe7fa; - --color-blue-200: #a2cadc; - --color-blue-300: #86adbf; - --color-blue-500: #6b91a3; - --color-blue-700: #507687; - --color-blue-800: #384B70; - --color-blue-900: #384B70; - --color-white: #fff; - --color-black: #000; -} - -@media (prefers-color-scheme: dark) { - :root { - color-scheme: light dark; - --bs-body-bg: var(--color-grey-700); - --bs-body-color: var(--color-grey-50); - --bs-secondary-color: var(--color-grey-300); - --bs-light-rgb: 105, 105, 105; - --aj-container-background: var(--bs-bg-opacity, .2); - --bs-text-dark: var(--color-grey-50); - } - body { - background-color: var(--color-grey-800) !important; - color: var(--color-grey-200) !important; - } - img { - filter: brightness(0.8) contrast(1.2); - } - .fa-solid, .fa-brand, i { - color: var(--color-grey-200) !important; - } - h1, .h1, h2, .h2, h3, .h3, h4, .h4, p, small, .small { - color: var(--color-grey-200); - font-weight: 350 !important; - } - .text-body-secondary, blockquote blockquote > p { - color: var(--sl-input-help-text-color); - } - .bg-light { - background-color: var(--aj-container-background) !important; - } - .text-dark { - color: var(--color-grey-950) !important; - } -} -.text-secondary, blockquote, blockquote > p { - color: var(--sl-input-help-text-color); -} - -:root { - --font-size-base: $size-base; -} - -:root { - --link-color-primary: #507687; - --link-color-primary-hover: #384B70; - --color-grey-50: #e8e8ec; - --color-grey-100: #f8f8f8; - --color-grey-200: #e3e3e3; - --color-grey-300: #bbb; - --color-grey-400: #949494; - --color-grey-500: #525759; - --color-grey-600: #424242; - --color-grey-800: #212529; - --color-grey-900: #010101; - --color-blue-50: #e6f4f1; - --color-blue-100: #bfe7fa; - --color-blue-200: #a2cadc; - --color-blue-300: #86adbf; - --color-blue-500: #6b91a3; - --color-blue-700: #507687; - --color-blue-800: #384B70; - --color-blue-900: #384B70; - --color-white: #fff; - --color-black: #000; -} - -@media (prefers-color-scheme: dark) { - :root { - color-scheme: light dark; - --bs-body-bg: var(--color-grey-700); - --bs-body-color: var(--color-grey-50); - --bs-secondary-color: var(--color-grey-300); - --bs-light-rgb: 105, 105, 105; - --aj-container-background: var(--bs-bg-opacity, .2); - --bs-text-dark: var(--color-grey-50); - } - body { - background-color: var(--color-grey-800) !important; - color: var(--color-grey-200) !important; - } - img { - filter: brightness(0.8) contrast(1.2); - } - .fa-solid, .fa-brand, i { - color: var(--color-grey-200) !important; - } - h1, .h1, h2, .h2, h3, .h3, h4, .h4, p, small, .small { - color: var(--color-grey-200); - font-weight: 350 !important; - } - .text-body-secondary, blockquote blockquote > p { - color: var(--sl-input-help-text-color); - } - .bg-light { - background-color: var(--aj-container-background) !important; - } - .text-dark { - color: var(--color-grey-950) !important; - } -} -.text-secondary, blockquote, blockquote > p { - color: var(--sl-input-help-text-color); -} - -:root { - --font-size-base: $size-base; -} - -/* stylelint-disable custom-property-pattern */ -/* stylelint-enable */ -:root { - --link-color-primary: #507687; - --link-color-primary-hover: #384B70; - --color-grey-50: #e8e8ec; - --color-grey-100: #f8f8f8; - --color-grey-200: #e3e3e3; - --color-grey-300: #bbb; - --color-grey-400: #949494; - --color-grey-500: #525759; - --color-grey-600: #424242; - --color-grey-800: #212529; - --color-grey-900: #010101; - --color-blue-50: #e6f4f1; - --color-blue-100: #bfe7fa; - --color-blue-200: #a2cadc; - --color-blue-300: #86adbf; - --color-blue-500: #6b91a3; - --color-blue-700: #507687; - --color-blue-800: #384B70; - --color-blue-900: #384B70; - --color-white: #fff; - --color-black: #000; -} - -@media (prefers-color-scheme: dark) { - :root { - color-scheme: light dark; - --bs-body-bg: var(--color-grey-700); - --bs-body-color: var(--color-grey-50); - --bs-secondary-color: var(--color-grey-300); - --bs-light-rgb: 105, 105, 105; - --aj-container-background: var(--bs-bg-opacity, .2); - --bs-text-dark: var(--color-grey-50); - } - body { - background-color: var(--color-grey-800) !important; - color: var(--color-grey-200) !important; - } - img { - filter: brightness(0.8) contrast(1.2); - } - .fa-solid, .fa-brand, i { - color: var(--color-grey-200) !important; - } - h1, .h1, h2, .h2, h3, .h3, h4, .h4, p, small, .small { - color: var(--color-grey-200); - font-weight: 350 !important; - } - .text-body-secondary, blockquote blockquote > p { - color: var(--sl-input-help-text-color); - } - .bg-light { - background-color: var(--aj-container-background) !important; - } - .text-dark { - color: var(--color-grey-950) !important; - } -} -.text-secondary, blockquote, blockquote > p { - color: var(--sl-input-help-text-color); -} - -.margin-none { - margin: 0; -} - -.margin-top-none { - margin-right: 0; -} - -.margin-bottom-none { - margin-bottom: 0; -} - -.margin-left-none { - margin-left: 0; -} - -.margin-xsm { - margin: 0.25rem; -} - -.margin-top-xsm { - margin-right: 0.25rem; -} - -.margin-bottom-xsm { - margin-bottom: 0.25rem; -} - -.margin-left-xsm { - margin-left: 0.25rem; -} - -.margin-sm { - margin: 0.5rem; -} - -.margin-top-sm { - margin-right: 0.5rem; -} - -.margin-bottom-sm { - margin-bottom: 0.5rem; -} - -.margin-left-sm { - margin-left: 0.5rem; -} - -.margin-md { - margin: 1rem; -} - -.margin-top-md { - margin-right: 1rem; -} - -.margin-bottom-md { - margin-bottom: 1rem; -} - -.margin-left-md { - margin-left: 1rem; -} - -.margin-lg { - margin: 1.25rem; -} - -.margin-top-lg { - margin-right: 1.25rem; -} - -.margin-bottom-lg { - margin-bottom: 1.25rem; -} - -.margin-left-lg { - margin-left: 1.25rem; -} - -.margin-xl { - margin: 1.5rem; -} - -.margin-top-xl { - margin-right: 1.5rem; -} - -.margin-bottom-xl { - margin-bottom: 1.5rem; -} - -.margin-left-xl { - margin-left: 1.5rem; -} - -.margin-xxl { - margin: 2rem; -} - -.margin-top-xxl { - margin-right: 2rem; -} - -.margin-bottom-xxl { - margin-bottom: 2rem; -} - -.margin-left-xxl { - margin-left: 2rem; -} - -.margin-display { - margin: 4rem; -} - -.margin-top-display { - margin-right: 4rem; -} - -.margin-bottom-display { - margin-bottom: 4rem; -} - -.margin-left-display { - margin-left: 4rem; -} - -.padding-none { - padding: 0; -} - -.padding-top-none { - padding-right: 0; -} - -.padding-bottom-none { - padding-bottom: 0; -} - -.padding-left-none { - padding-left: 0; -} - -.padding-xsm { - padding: 0.25rem; -} - -.padding-top-xsm { - padding-right: 0.25rem; -} - -.padding-bottom-xsm { - padding-bottom: 0.25rem; -} - -.padding-left-xsm { - padding-left: 0.25rem; -} - -.padding-sm { - padding: 0.5rem; -} - -.padding-top-sm { - padding-right: 0.5rem; -} - -.padding-bottom-sm { - padding-bottom: 0.5rem; -} - -.padding-left-sm { - padding-left: 0.5rem; -} - -.padding-md { - padding: 1rem; -} - -.padding-top-md { - padding-right: 1rem; -} - -.padding-bottom-md { - padding-bottom: 1rem; -} - -.padding-left-md { - padding-left: 1rem; -} - -.padding-lg { - padding: 1.25rem; -} - -.padding-top-lg { - padding-right: 1.25rem; -} - -.padding-bottom-lg { - padding-bottom: 1.25rem; -} - -.padding-left-lg { - padding-left: 1.25rem; -} - -.padding-xl { - padding: 1.5rem; -} - -.padding-top-xl { - padding-right: 1.5rem; -} - -.padding-bottom-xl { - padding-bottom: 1.5rem; -} - -.padding-left-xl { - padding-left: 1.5rem; -} - -.padding-xxl { - padding: 2rem; -} - -.padding-top-xxl { - padding-right: 2rem; -} - -.padding-bottom-xxl { - padding-bottom: 2rem; -} - -.padding-left-xxl { - padding-left: 2rem; -} - -.padding-display { - padding: 4rem; -} - -.padding-top-display { - padding-right: 4rem; -} - -.padding-bottom-display { - padding-bottom: 4rem; -} - -.padding-left-display { - padding-left: 4rem; -} - -.text-transform-uppercase { - text-transform: uppercase; -} - -.text-transform-capitalize { - text-transform: capitalize; -} - -.text-transform-lowercase { - text-transform: lowercase; -} - -.text-dashed { - text-decoration: dashed; -} - -.text-dotted { - text-decoration: dotted; -} - -.text-double { - text-decoration: double; -} - -.text-line-through { - text-decoration: line-through; -} - -.text-none { - text-decoration: none; -} - -.text-solid { - text-decoration: solid; -} - -.text-underline { - text-decoration: underline; -} - -.font-size-xs { - font-size: 0.75rem; -} - -.font-size-sm { - font-size: 0.875rem; -} - -.font-size-md { - font-size: 1rem; -} - -.font-size-lg { - font-size: 1.25rem; -} - -.font-size-xl { - font-size: 1.5rem; -} - -.font-size-xxl { - font-size: 2rem; -} - -.font-size-heading { - font-size: 2.5rem; -} - -.font-size-display { - font-size: 4.5rem; -} - -.text-align-left { - text-align: left; -} - -.text-align-center { - text-align: center; -} - -.text-align-right { - text-align: right; -} - -.border-radius-xs, .rounded-1 { - border-radius: 0.25rem; -} - -.border-radius-sm, .rounded-2, .card { - border-radius: 0.5rem; -} - -.border-radius-md, .rounded-3 { - border-radius: 1rem; -} - -.border-radius-lg, .rounded-3 { - border-radius: 1.25rem; -} - -.border-radius-xl, .rounded-5 { - border-radius: 1.5rem; -} - -.border-radius-xxl, .rounded-6 { - border-radius: 2rem; -} - -.border-radius-circle { - border-radius: 10000rem; -} - -.display-block, .nav a::after { - display: block; -} - -.display-inline-block { - display: inline-block; -} - -.display-flex, .overview, -.account, .nav-items, .nav { - display: flex; -} - -.display-inline-flex { - display: inline-flex; -} - -.display-none, #check, -.menu { - display: none; -} - -:root { - --link-color-primary: #507687; - --link-color-primary-hover: #384B70; - --color-grey-50: #e8e8ec; - --color-grey-100: #f8f8f8; - --color-grey-200: #e3e3e3; - --color-grey-300: #bbb; - --color-grey-400: #949494; - --color-grey-500: #525759; - --color-grey-600: #424242; - --color-grey-800: #212529; - --color-grey-900: #010101; - --color-blue-50: #e6f4f1; - --color-blue-100: #bfe7fa; - --color-blue-200: #a2cadc; - --color-blue-300: #86adbf; - --color-blue-500: #6b91a3; - --color-blue-700: #507687; - --color-blue-800: #384B70; - --color-blue-900: #384B70; - --color-white: #fff; - --color-black: #000; -} - -@media (prefers-color-scheme: dark) { - :root { - color-scheme: light dark; - --bs-body-bg: var(--color-grey-700); - --bs-body-color: var(--color-grey-50); - --bs-secondary-color: var(--color-grey-300); - --bs-light-rgb: 105, 105, 105; - --aj-container-background: var(--bs-bg-opacity, .2); - --bs-text-dark: var(--color-grey-50); - } - body { - background-color: var(--color-grey-800) !important; - color: var(--color-grey-200) !important; - } - img { - filter: brightness(0.8) contrast(1.2); - } - .fa-solid, .fa-brand, i { - color: var(--color-grey-200) !important; - } - h1, .h1, h2, .h2, h3, .h3, h4, .h4, p, small, .small { - color: var(--color-grey-200); - font-weight: 350 !important; - } - .text-body-secondary, blockquote blockquote > p { - color: var(--sl-input-help-text-color); - } - .bg-light { - background-color: var(--aj-container-background) !important; - } - .text-dark { - color: var(--color-grey-950) !important; - } -} -.text-secondary, blockquote, blockquote > p { - color: var(--sl-input-help-text-color); -} - -:root { - --sl-font-sans: "Oswald", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; - --sl-font-mono: "Fira Mono", "Roboto Mono", "Oxygen Mono", "Ubuntu Monospace", "Source Code Pro", "Fira Mono", "Droid Sans Mono", "Courier New", monospace; - --sl-font-serif: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; - --bs-font-sans-serif: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; -} - -body { - font-family: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; - font-weight: 400; - font-size: 18px; -} - -h1, h2, h3, h4, h5 { - font-family: "Oswald", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; - font-weight: 400; - color: var(--sl-color-neutral-900); -} - -.hero { - font-size: 72px; -} - -h1, .h1 { - font-size: 45px; - margin-top: 16px; - margin-right: 0; - margin-bottom: 16px; - margin-left: 0; - letter-spacing: 0; -} - -h2, .h2 { - font-size: 36px; - margin-top: 16px; - margin-right: 0; - margin-bottom: 16px; - margin-left: 0; - letter-spacing: 0; -} - -h3, .h3 { - font-size: 27px; - margin-top: 16px; - margin-right: 0; - margin-bottom: 16px; - margin-left: 0; - letter-spacing: 0; -} - -h4, .h4 { - font-size: 22.5px; - margin-top: 0px; - margin-right: 0; - margin-bottom: 8px; - margin-left: 0; - letter-spacing: 0; -} - -h5, .h5 { - font-size: 20.25px; - margin-top: 0px; - margin-right: 0; - margin-bottom: 4px; - margin-left: 0; - letter-spacing: 0; +/** +* Copyright 2008-2025 Adam J. Jolicoeur +* https://www.adamjolicoeur.com +**/ +:root, +body.light { + --primary:#0061a4; + --on-primary:#ffffff; + --primary-container:#d1e4ff; + --on-primary-container:#001d36; + --secondary:#535f70; + --on-secondary:#ffffff; + --secondary-container:#d7e3f7; + --on-secondary-container:#101c2b; + --tertiary:#6b5778; + --on-tertiary:#ffffff; + --tertiary-container:#f2daff; + --on-tertiary-container:#251431; + --error:#ba1a1a; + --on-error:#ffffff; + --error-container:#ffdad6; + --on-error-container:#410002; + --background:#fdfcff; + --on-background:#1a1c1e; + --surface:#faf9fc; + --on-surface:#1a1c1e; + --surface-variant:#dfe2eb; + --on-surface-variant:#43474e; + --outline:#73777f; + --outline-variant:#c3c7cf; + --shadow:#000000; + --scrim:#000000; + --inverse-surface:#2f3033; + --inverse-on-surface:#f1f0f4; + --inverse-primary:#9ecaff; + --surface-dim:#dadadd; + --surface-bright:#faf9fc; + --surface-container-lowest:#ffffff; + --surface-container-low:#f4f3f7; + --surface-container:#eeedf1; + --surface-container-high:#e8e8eb; + --surface-container-highest:#e2e2e6; +} + +:root, +body.dark { + --primary:#9ecaff; + --on-primary:#003258; + --primary-container:#00497d; + --on-primary-container:#d1e4ff; + --secondary:#bbc7db; + --on-secondary:#253140; + --secondary-container:#3b4858; + --on-secondary-container:#d7e3f7; + --tertiary:#d6bee4; + --on-tertiary:#3b2948; + --tertiary-container:#523f5f; + --on-tertiary-container:#f2daff; + --error:#ffb4ab; + --on-error:#690005; + --error-container:#93000a; + --on-error-container:#ffb4ab; + --background:#1a1c1e; + --on-background:#e2e2e6; + --surface:#121316; + --on-surface:#e2e2e6; + --surface-variant:#43474e; + --on-surface-variant:#c3c7cf; + --outline:#8d9199; + --outline-variant:#43474e; + --shadow:#000000; + --scrim:#000000; + --inverse-surface:#e2e2e6; + --inverse-on-surface:#2f3033; + --inverse-primary:#0061a4; + --surface-dim:#121316; + --surface-bright:#38393c; + --surface-container-lowest:#0d0e11; + --surface-container-low:#1a1c1e; + --surface-container:#1e2022; + --surface-container-high:#282a2d; + --surface-container-highest:#333538; } -.paragraph, -p, -li { - font-size: 18px; - font-weight: 400; - margin-top: 0; - margin-bottom: 1rem; - letter-spacing: 0; - color: var(--sl-color-neutral-900); -} -.paragraph:last-child, -p:last-child, -li:last-child { - margin-bottom: 0; +/* +** Arrow animations from https://codepen.io/postor/pen/vYpNYg +*/ +.arrows { + width: 60px; + height: 72px; + position: absolute; + left: 50%; + margin-left: -30px; + bottom: 20px; } -.paragraph-bold, -.bold, -p.bold { - font-weight: 700 !important; +.arrows path { + stroke: #bfe7fa; + fill: transparent; + stroke-width: 1px; + animation: arrow 2s infinite; + -webkit-animation: arrow 2s infinite; } -p.lead, .lead { - font-size: 22.5px; - font-weight: 300; - padding-right: calc(1.325rem + 0.9vw); - padding-left: calc(1.325rem + 0.9vw); -} -@media (min-width: 1200px) { - p.lead, .lead { - padding-right: 2rem; - } -} -@media (min-width: 1200px) { - p.lead, .lead { - padding-left: 2rem; +@keyframes arrow { + 0% { + opacity: 0; } -} - -small, -.small { - font-size: 15.75px; - letter-spacing: 0.2px; - color: var(--sl-color-neutral-900); -} - -li { - margin-bottom: 0.25rem; - letter-spacing: 0; -} - -code, -.code { - font-family: "Fira Mono", "Roboto Mono", "Oxygen Mono", "Ubuntu Monospace", "Source Code Pro", "Fira Mono", "Droid Sans Mono", "Courier New", monospace; - font-weight: 400; - font-size: 18px; - letter-spacing: 0; - background-color: var(--sl-color-neutral-200); - padding: 2px; - border-radius: 4px; -} - -pre { - background-color: var(--sl-color-neutral-200); - border-radius: 4px; - padding: var(--sl-spacing-small); -} - -.sub-header { - font-family: "Oswald", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; - font-weight: 400; - font-size: 27px; - color: var(--sl-color-neutral-600); - letter-spacing: 1.6px; - line-height: normal; -} - -.link-secondary, -a.link-secondary { - font-family: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; - font-weight: 700; - font-size: 18px; - font-style: normal; - line-height: normal; - letter-spacing: 0.8px; -} - -a, .icon-link { - font-family: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; - font-size: 18px; - font-style: normal; - line-height: normal; - letter-spacing: 0.8px; -} - -blockquote > p { - font-size: 27px; -} -blockquote > p::before { - content: "'"; -} -blockquote > p::after { - content: "'"; -} - -blockquote blockquote > p { - font-weight: 400; - font-size: 27px; -} -blockquote blockquote > p::before { - content: "- "; -} -blockquote blockquote > p::after { - content: " -"; -} - -dt, dd { - font-weight: 400; -} -@media (prefers-color-scheme: dark) { - dt, dd { - color: var(--sl-color-neutral-900); + 40% { + opacity: 1; } -} -dt:not(dd), dd:not(dd) { - font-weight: 700; -} - -dt:not(first-child) { - padding-top: var(--sl-spacing-small); -} - -b, .bold { - font-weight: 700; -} - -u, .underline { - text-decoration: underline; -} - -.text-body-emphasis { - color: var(--sl-color-neutral-900); -} - -.font-weight-semibold, .fw-semibold { - font-weight: 600; -} - -.font-weight-bold, .fw-bold { - font-weight: 800; -} - -.figure-caption { - font-style: italic; -} - -.text-white { - color: var(--color-white) !important; -} - -.text-value-pairs { - display: flex; - padding-top: 0; - padding-right: 1rem; - padding-bottom: 0; - padding-left: 1rem; - justify-content: space-between; - align-items: center; - row-gap: 8px; - align-self: stretch; - flex-wrap: wrap; -} - -.text-align-left { - text-align: left; -} -.text-body-secondary { - color: var(--sl-input-help-text-color); -} - -.text-body, blockquote > p, blockquote blockquote > p { - color: var(--sl-color-neutral-900); -} - -.text-transform-uppercase { - text-transform: uppercase !important; -} - -.text-bg-light { - background-color: var(--sl-color-neutral-100); -} - -.text-break { - word-wrap: break-word !important; - word-break: break-word !important; -} - -aside { - background-color: var(--sl-color-neutral-50); - box-shadow: 0 0 0 1px var(--sl-color-neutral-200); - border-radius: var(--sl-border-radius-medium); -} - -.toc.markdown-toc { - --sl-link-color: var(--sl-color-primary-700); - padding-top: var(--sl-spacing-x-small); - padding-bottom: var(--sl-spacing-x-small); - border-radius: var(--sl-border-radius-large); - position: sticky; - top: 16px; -} -.toc.markdown-toc a { - color: var(--sl-link-color); -} -.toc.markdown-toc a:hover { - color: var(--sl-color-primary-800); -} -.toc.markdown-toc ul { - display: flex; - flex-wrap: wrap; - justify-content: space-evenly; - align-items: center; - margin-top: var(--sl-spacing-small); - margin-bottom: var(--sl-spacing-small); - padding-left: var(--sl-spacing-large); - list-style: decimal-leading-zero; -} -.toc.markdown-toc ul ul { - padding-left: var(--sl-spacing-large); -} -@media only screen and (max-width: 776px) { - .toc.markdown-toc ul { - justify-content: space-between; - list-style: none; - padding-right: 2rem !important; - margin-bottom: 0 !important; + 80% { + opacity: 0; } - .toc.markdown-toc ul li ul li { - display: none; + 100% { + opacity: 0; } } - -footer, -.footer { - display: flex; - padding-top: 1rem; - padding-right: calc(1.275rem + 0.3vw); - padding-bottom: 1rem; - padding-left: calc(1.275rem + 0.3vw); - background: rgb(39, 39, 42); - align-items: center; - gap: 16px; - align-self: stretch; - border-top: 1px solid var(--sl-color-neutral-600); -} -@media (min-width: 1200px) { - footer, - .footer { - padding-right: 1.5rem; +@-webkit-keyframes arrow /*Safari and Chrome*/ { + 0% { + opacity: 0; } -} -@media (min-width: 1200px) { - footer, - .footer { - padding-left: 1.5rem; + 40% { + opacity: 1; } -} -@media (prefers-color-scheme: dark) { - footer, - .footer { - background: var(--sl-color-neutral-100); - color: var(--sl-color-neutral-50); + 80% { + opacity: 0; + } + 100% { + opacity: 0; } } -footer a, -.footer a { - text-decoration: none !important; - color: var(--sl-color-primary-700) !important; -} -footer a:hover, -.footer a:hover { - color: inherit !important; -} -footer a:hover, -.footer a:hover { - color: var(--sl-color-primary-500) !important; -} -footer ul, -.footer ul { - list-style: none !important; - margin-left: 0; -} -footer small, footer .small, -.footer small, -.footer .small { - color: var(--sl-color-neutral-950); - font-size: 13.5px; -} - -.footer-link { - color: var(--link-color-primary); -} -.footer-link:hover, .footer-link:active { - color: var(--link-color-primary-hover); -} - -sl-button::part(base) { - font-weight: 700; - font-size: 18px; - font-family: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; -} - -sl-button.card-button::part(base) { - display: flex; - justify-content: center; - font-weight: 700; -} - -.button-overlay { - display: flex; - flex-direction: column; - justify-content: center; -} - -sl-button.project-button::part(base) { - border-color: #e6f4f1; - color: #e6f4f1; -} -sl-button.project-button::part(base):hover { - border-color: #86adbf; - color: #86adbf; -} - -.card-cover { - background-repeat: no-repeat; - background-position: top right; - background-size: cover; -} - -.text-shadow-1 { - text-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.25); -} - -.bi { - vertical-align: -0.125em; - fill: currentcolor; -} - -.card { - background-color: var(--sl-panel-background-color); - box-shadow: var(--sl-shadow-large); -} - -.card-cover { - background-repeat: no-repeat; - background-position: center center; - background-size: cover; -} - -.card-link { - font-size: 0.875rem; - color: var(--color-white); -} -.card-link > i { - color: var(--color-white) !important; -} -.card-link:hover { - color: inherit; - text-decoration: underline; -} - -.background-overlay .card-link:hover { - color: var(--sl-color-primary-400); -} - -.card-transform { - transform: translateZ(0); - transition-duration: 0.7s; - transition-property: transform; -} -.card-transform:hover, .card-transform:focus { - transform: scale(1.05); -} - -/* Nav */ -.nav { - height: 70px; - background: var(--color-grey-900); - color: var(--sl-color-neutral-50); - padding: 0 2rem; - justify-content: space-between; - align-items: center; - z-index: var(--sl-z-index-drawer); -} - -.logo h2 { - font-style: italic; - text-decoration: overline; - color: var(--sl-color-primary-800); - cursor: pointer; - margin: 0 0.5rem; -} - -.nav-items { - justify-content: space-between; -} - -.overview, -.account { - align-items: center; -} - -.overview { - margin-right: 4rem; -} - -.nav li { - list-style: none; - margin: 0 0.5rem; -} - -.nav a { - text-decoration: none; - color: var(--sl-color-neutral-900); -} - -.nav a:hover, -.nav a.nav-link.active { - color: var(--sl-color-primary-600); -} - -.nav a::after { - content: ""; - height: 3px; - background: var(--sl-color-primary-600); - width: 0%; - transition: all ease-in-out 300ms; +.arrows path.a1 { + animation-delay: -1s; + -webkit-animation-delay: -1s; /* Safari 和 Chrome */ } -.nav a:hover::after { - width: 100%; +.arrows path.a2 { + animation-delay: -0.5s; + -webkit-animation-delay: -0.5s; /* Safari 和 Chrome */ } -.nav-icon { - display: flex; - justify-content: center; +.arrows path.a3 { + animation-delay: 0s; + -webkit-animation-delay: 0s; /* Safari 和 Chrome */ } -/* Responsive */ -@media (max-width: 776px) { - .nav-items { - padding: calc(1.325rem + 0.9vw); - display: none; - position: fixed; - top: 0; - right: 0; - height: 100vh; - width: 250px; - flex-direction: column; - justify-content: space-evenly; - z-index: var(--sl-z-index-drawer); - background-color: var(--color-grey-900); - transition: all ease-in-out 500ms; - } -} -@media (max-width: 776px) and (min-width: 1200px) { - .nav-items { - padding: 2rem; - } -} -@media (max-width: 776px) { - .overview, - .account { - flex-direction: column; - width: auto; - } - .overview { - margin: 0; - } - .nav li { - margin: 1rem 0; - } - .nav a { - display: inline-block; - } - .nav a:hover { - margin-left: 2px; - transition: all ease-in-out 300ms; - } - .menu { - padding: 0.5rem; - display: inline-block; - position: fixed; - top: 0.5rem; - right: 0.5rem; - background: #131316; - border-radius: var(--sl-border-radius-circle); - color: var(--sl-color-neutral-950); - z-index: calc(var(--sl-z-index-drawer) + 1); - } -} -@media (max-width: 776px) and (prefers-color-scheme: dark) { - .menu { - background: #131316; - } -} -@media (max-width: 776px) { - .menu:hover { - background: rgb(249.6341463415, 249.6341463415, 250.3658536585); - color: rgb(25.5, 25.5, 25.5); - transition: all ease-in-out 300ms; - cursor: pointer; - } - #check:checked ~ .nav-items { - right: 0; - display: block; - } -} body { - margin: 0; + font-size: 1rem !important; } -.print { +.display-none { display: none !important; } -.content { - display: flex; - max-width: 1920px; - margin-left: auto; - margin-right: auto; - width: 100%; - min-height: calc(100vh - 80px); - flex-direction: column; -} - -.divider-large { - height: 3rem; - background-color: rgba(0, 0, 0, 0.1); - border: solid rgba(0, 0, 0, 0.15); - border-width: 1px 0; - box-shadow: inset 0 0.5em 1.5em rgba(0, 0, 0, 0.1), inset 0 0.125em 0.5em rgba(0, 0, 0, 0.15); -} - -.navbar { - background-color: var(--color-grey-900); -} - -.overlay { - display: flex; - justify-content: center; - align-items: center; - height: 500px; - min-height: 500px; - background: rgba(0, 0, 0, 0.8); - background-repeat: no-repeat; - background-size: contain; -} - -.imager { - padding-right: 0; - padding-left: 0; - background: url("../img/dashboard_minimal.png"); - background-size: cover; +@media only screen and (max-width: 601px) { + .s-display-none { + display: none !important; + } } - -.portfolio-img-background { - padding-right: 0; - padding-left: 0; - background: url("../img/AdamJolicoeur_dot_com-minimal.png"); - background-size: cover; +.toc.markdown-toc { + text-align: left !important; + font-size: 1.25rem !important; } -.paragraph-inset { - padding-top: 0; - padding-right: 1rem; - padding-bottom: 0; - padding-left: 1rem; +.text-center { + text-align: center !important; } -.job { - font-family: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; +.subtitle-h5 { + font-size: 1.75rem; font-weight: 400; - align-self: stretch; - word-wrap: break-word; -} -.job--company-name { - margin-bottom: 8px; -} -.job--company-role { - margin-bottom: 8px; - color: var(--sl-color-neutral-700); -} -.job--company-dates { - margin-bottom: 0; - color: var(--sl-color-neutral-700); + display: block; + align-items: center; + line-height: normal; } -.column-list-item { - font-family: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; +.subtitle-h6 { + font-size: 1.5rem; font-weight: 400; - margin-bottom: 0; - align-self: stretch; - word-wrap: break-word; -} - -.list-unstyled { - list-style: none; -} - -.hidden { - visibility: hidden !important; -} - -.anchor-link { - visibility: hidden; -} - -.dark-background * { - color: var(--sl-color-neutral-50) !important; -} - -.img-fluid { - max-width: 100%; - height: auto; -} - -.background-overlay { - background: rgba(0, 0, 0, 0.8); -} -.background-overlay-light { - background: rgba(0, 0, 0, 0.5); -} - -.figure-img { - margin-bottom: 0.5rem; - line-height: 1; + display: block; + align-items: center; + line-height: normal; } -.banner { - font-weight: 600; - font-size: 18px; - padding: 0.5rem 1rem; - margin: 0.5rem 0; - background-color: rgba(0, 127, 200, 0.5); - border-top-left-radius: 1rem; - border-bottom-right-radius: 1rem; - box-shadow: 0 1px 0 0 rgba(232, 232, 236, 0.5); - color: var(--color-white); +/* +* Adjust Speedlify colors +*/ +:host span.circle.circle-ok { + color: var(--tertiary) !important; + border-color: var(--tertiary) !important; } - -/*# sourceMappingURL=style.css.map */ diff --git a/docs/css/style.css.map b/docs/css/style.css.map index b59078f8..833cef2e 100644 --- a/docs/css/style.css.map +++ b/docs/css/style.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../src/sass/style.scss","../../node_modules/bootstrap/scss/mixins/_banner.scss","../../node_modules/bootstrap/scss/_containers.scss","../../node_modules/bootstrap/scss/mixins/_container.scss","../../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../node_modules/bootstrap/scss/_variables.scss","../../node_modules/bootstrap/scss/_grid.scss","../../node_modules/bootstrap/scss/mixins/_grid.scss","../../node_modules/bootstrap/scss/mixins/_utilities.scss","../../node_modules/bootstrap/scss/utilities/_api.scss","../../src/sass/_animations.scss","../../src/sass/_font-oswald.scss","../../src/sass/_font-lato.scss","../../src/sass/_colors.scss","../../src/sass/_variables.scss","../../src/sass/_mixins.scss","../../src/sass/_typography.scss","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../src/sass/_toc.scss","../../src/sass/_footer.scss","../../src/sass/_buttons.scss","../../src/sass/_cards.scss","../../src/sass/_navigation.scss","../../src/sass/_general.scss"],"names":[],"mappings":";AAAA;ACCE;AAAA;AAAA;AAAA;AAAA;ACKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ECHA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACsDE;EF5CE;IACE,WGkee;;;ADvbnB;EF5CE;IACE,WGkee;;;ADvbnB;EF5CE;IACE,WGkee;;;ADvbnB;EF5CE;IACE,WGkee;;;ADvbnB;EF5CE;IACE,WGkee;;;AClfvB;EAEI;EAAA;EAAA;EAAA;EAAA;EAAA;;;AAKF;ECNA;EACA;EACA;EACA;EAEA;EACA;EACA;;ADEE;ECGF;EAIA;EACA;EACA;EACA;EACA;EACA;;;AA+CI;EACE;;;AAGF;EApCJ;EACA;;;AAcA;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AA+BE;EAhDJ;EACA;;;AAqDQ;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AAuEQ;EAxDV;;;AAwDU;EAxDV;;;AAwDU;EAxDV;;;AAwDU;EAxDV;;;AAwDU;EAxDV;;;AAwDU;EAxDV;;;AAwDU;EAxDV;;;AAwDU;EAxDV;;;AAwDU;EAxDV;;;AAwDU;EAxDV;;;AAwDU;EAxDV;;;AAmEM;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AAPF;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AAPF;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AAPF;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AAPF;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AAPF;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AH1DN;EGUE;IACE;;EAGF;IApCJ;IACA;;EAcA;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EA+BE;IAhDJ;IACA;;EAqDQ;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EAuEQ;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAmEM;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;;AH1DN;EGUE;IACE;;EAGF;IApCJ;IACA;;EAcA;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EA+BE;IAhDJ;IACA;;EAqDQ;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EAuEQ;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAmEM;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;;AH1DN;EGUE;IACE;;EAGF;IApCJ;IACA;;EAcA;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EA+BE;IAhDJ;IACA;;EAqDQ;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EAuEQ;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAmEM;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;;AH1DN;EGUE;IACE;;EAGF;IApCJ;IACA;;EAcA;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EA+BE;IAhDJ;IACA;;EAqDQ;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EAuEQ;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAmEM;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;;AH1DN;EGUE;IACE;;EAGF;IApCJ;IACA;;EAcA;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EA+BE;IAhDJ;IACA;;EAqDQ;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EAuEQ;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAmEM;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;;ACvDF;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AJVR;EIGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;AJVR;EIGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;AJVR;EIGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;AJVR;EIGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;AJVR;EIGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;ACnCZ;ED4BQ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;ARvEZ;AACA;AAAA;AAAA;AAAA;AUHA;AAAA;AAAA;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;IAAI;;EACJ;IAAK;;EACL;IAAK;;EACL;IAAM;;;AAGR;EACE;IAAI;;EACJ;IAAK;;EACL;IAAK;;EACL;IAAM;;;AAGR;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AC1CF;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;;;AC/BF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;ACIF;EACE;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EAIA;EACA;;;AAEF;EACE;IACE;IACA;IACA;IACA;IACA;IACA;IACA;;EAEF;IACE;IACA;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;IACA;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAGJ;EACE;;;ACxHF;EACE;;;ADwDF;EACE;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EAIA;EACA;;;AAEF;EACE;IACE;IACA;IACA;IACA;IACA;IACA;IACA;;EAEF;IACE;IACA;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;IACA;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAGJ;EACE;;;ACxHF;EACE;;;ACAF;AA4LA;AFpIA;EACE;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EAIA;EACA;;;AAEF;EACE;IACE;IACA;IACA;IACA;IACA;IACA;IACA;;EAEF;IACE;IACA;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;IACA;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAGJ;EACE;;;AEIE;EACE,QAFoB;;;AAItB;EACE,cALoB;;;AAOtB;EACE,eARoB;;;AAUtB;EACE,aAXoB;;;AACtB;EACE,QAFoB;;;AAItB;EACE,cALoB;;;AAOtB;EACE,eARoB;;;AAUtB;EACE,aAXoB;;;AACtB;EACE,QAFoB;;;AAItB;EACE,cALoB;;;AAOtB;EACE,eARoB;;;AAUtB;EACE,aAXoB;;;AACtB;EACE,QAFoB;;;AAItB;EACE,cALoB;;;AAOtB;EACE,eARoB;;;AAUtB;EACE,aAXoB;;;AACtB;EACE,QAFoB;;;AAItB;EACE,cALoB;;;AAOtB;EACE,eARoB;;;AAUtB;EACE,aAXoB;;;AACtB;EACE,QAFoB;;;AAItB;EACE,cALoB;;;AAOtB;EACE,eARoB;;;AAUtB;EACE,aAXoB;;;AACtB;EACE,QAFoB;;;AAItB;EACE,cALoB;;;AAOtB;EACE,eARoB;;;AAUtB;EACE,aAXoB;;;AACtB;EACE,QAFoB;;;AAItB;EACE,cALoB;;;AAOtB;EACE,eARoB;;;AAUtB;EACE,aAXoB;;;AAqBtB;EACE,SAFoB;;;AAItB;EACE,eALoB;;;AAOtB;EACE,gBARoB;;;AAUtB;EACE,cAXoB;;;AACtB;EACE,SAFoB;;;AAItB;EACE,eALoB;;;AAOtB;EACE,gBARoB;;;AAUtB;EACE,cAXoB;;;AACtB;EACE,SAFoB;;;AAItB;EACE,eALoB;;;AAOtB;EACE,gBARoB;;;AAUtB;EACE,cAXoB;;;AACtB;EACE,SAFoB;;;AAItB;EACE,eALoB;;;AAOtB;EACE,gBARoB;;;AAUtB;EACE,cAXoB;;;AACtB;EACE,SAFoB;;;AAItB;EACE,eALoB;;;AAOtB;EACE,gBARoB;;;AAUtB;EACE,cAXoB;;;AACtB;EACE,SAFoB;;;AAItB;EACE,eALoB;;;AAOtB;EACE,gBARoB;;;AAUtB;EACE,cAXoB;;;AACtB;EACE,SAFoB;;;AAItB;EACE,eALoB;;;AAOtB;EACE,gBARoB;;;AAUtB;EACE,cAXoB;;;AACtB;EACE,SAFoB;;;AAItB;EACE,eALoB;;;AAOtB;EACE,gBARoB;;;AAUtB;EACE,cAXoB;;;AAjDtB;EACE,gBAFyB;;;AAC3B;EACE,gBAFyB;;;AAC3B;EACE,gBAFyB;;;AAV3B;EACE,iBAF0B;;;AAC5B;EACE,iBAF0B;;;AAC5B;EACE,iBAF0B;;;AAC5B;EACE,iBAF0B;;;AAC5B;EACE,iBAF0B;;;AAC5B;EACE,iBAF0B;;;AAC5B;EACE,iBAF0B;;;AAV5B;EACE,WAFoB;;;AACtB;EACE,WAFoB;;;AACtB;EACE,WAFoB;;;AACtB;EACE,WAFoB;;;AACtB;EACE,WAFoB;;;AACtB;EACE,WAFoB;;;AACtB;EACE,WAFoB;;;AACtB;EACE,WAFoB;;;AATtB;EACE,YAFwB;;;AAC1B;EACE,YAFwB;;;AAC1B;EACE,YAFwB;;;AAV1B;EACE,eAFoB;;;AACtB;EACE,eAFoB;;;AACtB;EACE,eAFoB;;;AACtB;EACE,eAFoB;;;AACtB;EACE,eAFoB;;;AACtB;EACE,eAFoB;;;AACtB;EACE,eAFoB;;;AAkItB;EACE,SAFmB;;;AACrB;EACE,SAFmB;;;AACrB;AAAA;EACE,SAFmB;;;AACrB;EACE,SAFmB;;;AACrB;AAAA;EACE,SAFmB;;;AF1HzB;EACE;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EAIA;EACA;;;AAEF;EACE;IACE;IACA;IACA;IACA;IACA;IACA;IACA;;EAEF;IACE;IACA;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;IACA;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAGJ;EACE;;;AG1HF;EACE;EACA;EACA;EACA;;;AAGF;EDqBE;EAgKA,aCnLqB;EDsCrB;;;ACnCF;EDyBE;EAuJA,aC9KqB;EAErB;;;AAEF;ED6BE;;;AC1BF;ED0BE;EA8DA,YCtFoB;EDyFpB,cCxFsB;ED2FtB,eC1FuB;ED6FvB,aC5FqB;EAErB;;;AAEF;EDiBE;EA8DA,YC7EoB;EDgFpB,cC/EsB;EDkFtB,eCjFuB;EDoFvB,aCnFqB;EAErB;;;AAEF;EDQE;EA8DA,YCpEoB;EDuEpB,cCtEsB;EDyEtB,eCxEuB;ED2EvB,aC1EqB;EAErB;;;AAEF;EDDE;EA8DA,YC3DoB;ED8DpB,cC7DsB;EDgEtB,eC/DuB;EDkEvB,aCjEqB;EAErB;;;AAEF;EDVE;EA8DA,YClDoB;EDqDpB,cCpDsB;EDuDtB,eCtDuB;EDyDvB,aCxDqB;EAErB;;;AAEF;AAAA;AAAA;EDnBE;EA6IA,aCtHqB;EDuCrB,YCtCoB;ED4CpB,eC3CuB;EAEvB;EACA;;AACA;AAAA;AAAA;EACE;;;AAGJ;AAAA;AAAA;EAGE;;;AAEF;EDtCE;EA6IA,aCrGqB;EC0Mf;EAAA;;AA5JJ;EDhDJ;ICmNQ;;;AAnKJ;EDhDJ;ICmNQ;;;;AD7MR;AAAA;ED5CE;EC+CA;EACA;;;AAEF;EDkBE,eCjBuB;EAEvB;;;AAEF;AAAA;EDvEE;EA6JA,aCnFqB;ED1DrB;EC6DA;EAEA;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EDlFE;EAuJA,aCnEqB;ED1ErB;EC6EA;EAEA;EACA;;;AAEF;AAAA;EDrGE;EAgKA,aCxDqB;EDrFrB;EAyDA,YC8BoB;EAEpB;EACA;;;AAEF;ED/GE;EAmBA;EAyDA,YCsCoB;EAEpB;EACA;;;AAEF;EDpGE;;ACuGA;EACE;;AAEF;EACE;;;AAGJ;ED+BE,aC9BqB;ED/GrB;;ACmHA;EACE;;AAEF;EACE;;;AAGJ;EDmBE,aClBqB;;AACrB;EAFF;IAGI;;;AAEF;EDcA,aCbuB;;;AAGzB;EACE;;;AAEF;EDOE,aCNqB;;;AAEvB;EACE;;;AAEF;EDrLE;;;ACwLF;EDFE,aCGqB;;;AAEvB;EDLE,aCMqB;;;AAEvB;ED5FE,YC6FoB;;;AAEtB;EACE;;;AAEF;EDhME;EEmRI,aALI;EAKJ,eALI;EAKJ,gBALI;EAKJ,cALI;EDvER;EACA;EACA;EACA;EACA;;;AAoBF;EACE;;AAkBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AE5QF;EACE;EACA;EACA;;;AAEF;EAGI;EAEF;EACA;EACA;EACA;EACA;;AACA;EACE;;AACA;EACE;;AAGJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACA;;AAGF;EACE;IAEE;IACA;IACA;IACA;;EACA;IACE;;;;AC1CR;AAAA;EJYE;EEmRI,aALI;EASF;EAJF,gBALI;EASF;EE3RN;EAOA;EACA;EACA;EACA;;AFqHE;EEvIJ;AAAA;IF0SQ;;;AAnKJ;EEvIJ;AAAA;IF0SQ;;;AEtRN;EApBF;AAAA;IAqBI;IACA;;;AAEF;AAAA;EACE;EAOE;;AALF;AAAA;EACE;;AAKA;AAAA;EACE;;AAIN;AAAA;EJbA;EA+FA,aIhFuB;;AAEvB;AAAA;AAAA;EAGI;EJIJ;;;AICF;EACE;;AACA;EACE;;;ACrDJ;EL8LE,aK7LqB;ELgDrB;EAnBA;;;AKzBF;EACE;EACA;ELuLA,aKtLqB;;;AAEvB;ELEE;EKCA;EACA;;;AAEF;EACE;EACA;;AACA;EACE;EACA;;;ACrBJ;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AAEF;EJyQM,WALI;EIjQR;;AACA;EACE;;AAEF;EACE;EACA;;;AAIF;EACE;;;AAGJ;EACE;EACA;EACA;;AACA;EAEE;;;AC7CJ;AACA;EAEE;EAGE;EAEF;EACA;EACA;EACA;EACA;;;AAEF;EP4FE,YO3FoB;EACpB;EAGE;EAEF;EACA;;;AAEF;EAEE;;;AAEF;AAAA;EAGE;;;AAEF;EPiFE,cOhFsB;;;AAExB;EACE;EACA;;;AAEF;EACE;EAGE;;;AAGJ;AAAA;EAII;;;AAGJ;EACE;EAEA;EAGE;EAEF;EACA;;;AAEF;EACE;;;AAMF;EACE;EACA;;;AAGF;AACA;EACE;ILoNM;IKlNJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IAEE;IAEF;;;ALyCA;EKxDF;IL2NM;;;AK5NR;EAkBE;AAAA;IAEE;IACA;;EAEF;IACE;;EAEF;ILuLI,QALI;;EK/KR;IACE;;EAEF;IACE;IACA;;EAEF;IL6KI,SALI;IKtKN;IACA;IACA;IACA;IACA;IACA;IACA;IAIA;;;AAHA;EATF;IAUI;;;AA9CN;EAiDI;IACE;IACA;IACA;IACA;;EAGJ;IACE;IACA;;;ACxIJ;EN+RM,QALI;;;AMvRV;EACE;;;AAEF;ERME;EQHA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;ERdE;EQiBA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EN0PM,eALI;EAKJ,cALI;EMjPR;EACA;;;AAEF;ENmPM,eALI;EAKJ,cALI;EM1OR;EACA;;;AAEF;EN4OM,aALI;EAKJ,eALI;EAKJ,gBALI;EAKJ,cALI;;;AMjOV;ER3BE;EAgKA,aQnIqB;EAErB;EACA;;AACA;ERsDA,eQrDyB;;AAEzB;ERmDA,eQlDyB;EAEvB;;AAEF;ER8CA,eQ7CyB;EAEvB;;;AAGJ;ER/CE;EAgKA,aQ/GqB;ERsCrB,eQrCuB;EAEvB;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAqBF;EACE;;AACA;EACE;;;AAGJ;EACE;EACA;;;AAEF;ER4DE,aQ3DqB;ERlFrB;EQoFA;EACA;EACA;EACA;EACA;EACA;EACA","file":"style.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../src/sass/style.scss","../../src/sass/_variables.scss","../../src/sass/_animations.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;EAEE;EACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEA;AAAA;EAEE;EACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AC5EA;AAAA;AAAA;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;IAAI;;EACJ;IAAK;;EACL;IAAK;;EACL;IAAM;;;AAGR;EACE;IAAI;;EACJ;IAAK;;EACL;IAAK;;EACL;IAAM;;;AAGR;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AFrCF;EACE;;;AAEF;EACE;;;AAEF;EACE;IACE;;;AAIJ;EACE;EACA;;;AAEF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAIA;EACE;EACA","file":"style.css"} \ No newline at end of file diff --git a/docs/css/style.min.css b/docs/css/style.min.css new file mode 100644 index 00000000..3d71b4bc --- /dev/null +++ b/docs/css/style.min.css @@ -0,0 +1,183 @@ +@charset "UTF-8"; +/** +* Copyright 2008-2025 Adam J. Jolicoeur +* https://www.adamjolicoeur.com +**/ +:root, +body.light { + --primary:#0061a4; + --on-primary:#ffffff; + --primary-container:#d1e4ff; + --on-primary-container:#001d36; + --secondary:#535f70; + --on-secondary:#ffffff; + --secondary-container:#d7e3f7; + --on-secondary-container:#101c2b; + --tertiary:#6b5778; + --on-tertiary:#ffffff; + --tertiary-container:#f2daff; + --on-tertiary-container:#251431; + --error:#ba1a1a; + --on-error:#ffffff; + --error-container:#ffdad6; + --on-error-container:#410002; + --background:#fdfcff; + --on-background:#1a1c1e; + --surface:#faf9fc; + --on-surface:#1a1c1e; + --surface-variant:#dfe2eb; + --on-surface-variant:#43474e; + --outline:#73777f; + --outline-variant:#c3c7cf; + --shadow:#000000; + --scrim:#000000; + --inverse-surface:#2f3033; + --inverse-on-surface:#f1f0f4; + --inverse-primary:#9ecaff; + --surface-dim:#dadadd; + --surface-bright:#faf9fc; + --surface-container-lowest:#ffffff; + --surface-container-low:#f4f3f7; + --surface-container:#eeedf1; + --surface-container-high:#e8e8eb; + --surface-container-highest:#e2e2e6; +} + +:root, +body.dark { + --primary:#9ecaff; + --on-primary:#003258; + --primary-container:#00497d; + --on-primary-container:#d1e4ff; + --secondary:#bbc7db; + --on-secondary:#253140; + --secondary-container:#3b4858; + --on-secondary-container:#d7e3f7; + --tertiary:#d6bee4; + --on-tertiary:#3b2948; + --tertiary-container:#523f5f; + --on-tertiary-container:#f2daff; + --error:#ffb4ab; + --on-error:#690005; + --error-container:#93000a; + --on-error-container:#ffb4ab; + --background:#1a1c1e; + --on-background:#e2e2e6; + --surface:#121316; + --on-surface:#e2e2e6; + --surface-variant:#43474e; + --on-surface-variant:#c3c7cf; + --outline:#8d9199; + --outline-variant:#43474e; + --shadow:#000000; + --scrim:#000000; + --inverse-surface:#e2e2e6; + --inverse-on-surface:#2f3033; + --inverse-primary:#0061a4; + --surface-dim:#121316; + --surface-bright:#38393c; + --surface-container-lowest:#0d0e11; + --surface-container-low:#1a1c1e; + --surface-container:#1e2022; + --surface-container-high:#282a2d; + --surface-container-highest:#333538; +} + +/* +** Arrow animations from https://codepen.io/postor/pen/vYpNYg +*/ +.arrows { + width: 60px; + height: 72px; + position: absolute; + left: 50%; + margin-left: -30px; + bottom: 20px; +} + +.arrows path { + stroke: #bfe7fa; + fill: transparent; + stroke-width: 1px; + animation: arrow 2s infinite; + -webkit-animation: arrow 2s infinite; +} + +@keyframes arrow { + 0% { + opacity: 0; + } + 40% { + opacity: 1; + } + 80% { + opacity: 0; + } + 100% { + opacity: 0; + } +} +@-webkit-keyframes arrow /*Safari and Chrome*/ { + 0% { + opacity: 0; + } + 40% { + opacity: 1; + } + 80% { + opacity: 0; + } + 100% { + opacity: 0; + } +} +.arrows path.a1 { + animation-delay: -1s; + -webkit-animation-delay: -1s; /* Safari 和 Chrome */ +} + +.arrows path.a2 { + animation-delay: -0.5s; + -webkit-animation-delay: -0.5s; /* Safari 和 Chrome */ +} + +.arrows path.a3 { + animation-delay: 0s; + -webkit-animation-delay: 0s; /* Safari 和 Chrome */ +} + +body { + font-size: 1rem !important; +} + +.display-none { + display: none !important; +} + +@media only screen and (max-width: 601px) { + .s-display-none { + display: none !important; + } +} +.toc.markdown-toc { + text-align: left !important; + font-size: 1.25rem !important; +} + +.text-center { + text-align: center !important; +} + +/* +* Adjust Speedlify colors +*/ +span.circle.circle-ok { + color: var(--tertiary) !important; + border-color: var(--tertiary) !important; +} + +.circle.circle-good { + color: var(--primary); +} + +/*# sourceMappingURL=style.min.css.map */ diff --git a/docs/css/style.min.css.map b/docs/css/style.min.css.map new file mode 100644 index 00000000..109db748 --- /dev/null +++ b/docs/css/style.min.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../src/sass/style.scss","../../src/sass/_variables.scss","../../src/sass/_animations.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;EAEE;EACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEA;AAAA;EAEE;EACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AC5EA;AAAA;AAAA;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;IAAI;;EACJ;IAAK;;EACL;IAAK;;EACL;IAAM;;;AAGR;EACE;IAAI;;EACJ;IAAK;;EACL;IAAK;;EACL;IAAM;;;AAGR;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AFrCF;EACE;;;AAEF;EACE;;;AAEF;EACE;IACE;;;AAIJ;EACE;EACA;;;AAEF;EACE;;;AAGF;AAAA;AAAA;AAGA;EACE;EACA;;;AAEF;EACE","file":"style.min.css"} \ No newline at end of file diff --git a/docs/designs/alm/index.html b/docs/designs/alm/index.html index a3515609..149f9b9e 100644 --- a/docs/designs/alm/index.html +++ b/docs/designs/alm/index.html @@ -1,499 +1,15 @@ - - - - - - - - Application Lifecycle Management | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Application Lifecycle Management

-

- A one-stop-shop for a team's planning and project lifecycle management. -

- - -
-
-
- -
Role
-
Interaction Designer, Prototypes
-
Areas
-
Wireframes, user paths, usability, prototyping
-
Challenge
-
The greater project team was using multiple project management tools, code repositories, and application development processes, with none of them talking to each other. This project takes all of those areas of concern and brings them together into a single, cohesive interface.
-
-
-
-
-
-

The Process

-

Before starting on the Application Lifecycle Management project, it was determined that the following areas would be need to be covered: list of target users, a user flow, wireframes, and, potentially, prototypes for user testings and feasibility.

-

Target Users

-

Through discussions with Stakeholders and Project Management, it was decided that the target users would be set in tiers - General Users (those who need to add and interact with issues, update project assets, and interact daily - a mix of designers and developers); Project Managers (organizers of work, set deadlines and release dates), and Administrators (control any integrations, add-ons, and access).

-

Application Lifecycle Management flow

-
- - ALM workflow - - Close - - - ALM workflow - -
-

Wireframes and Workflows

-

For each section of the ALM application, workflows and wireframes were used to identify possible user paths, as well as to strategize initial designs before moving on to high fidelity mockups and prototypes.

-

From Work Items to Development

-

Goals:

-
    -
  • Communicates to the user that direct access to developing the Work Item is available in a single click.
  • -
  • Implementation is unobtrusive and implies navigation.
  • -
  • Location will not accidentally be clicked, allowing for enough real estate for line lengths and other meta data. The location of the integration should also imply moving forward.
  • -
  • Ordered by recommendation - require users to fill in one area before moving on.
  • -
  • As a button, it needs to have a prominent place yet not take the place of a primary button (in style).
  • -
- Steps to complete the process: -
-
- - - - Step 1 of the ALM wireframes - - - Step 2 of the ALM wireframes - - - Step 3 of the ALM wireframes - - -
-
- - -
- Wireframe of the work item to coding experience -
-
-

Wireframe

-

This wireframe was created with call outs in order to communicate my thoughts around the design to anyone who saw it, but could not talk with me. Specifically, this worked extremely well when working with colleagues in other time zones where our working ours did not match up.

-
-
-
-
-

From these workflows and wireframes, it was determined that additional questions needed to be answered:

-
    -
  • How do we handle accuracy between the linking of work items?
  • -
  • If the work items has a fine name and line number, is the commit SHA also used to help identify the connection?
  • -
  • Are we able to type the URL in a browser and navigate to the work item? (Does it have a unique link or is it randomly generated each time?)
  • -
-

Visual Design

-

After completing the wireframes and flows, a sample visual design was created. This design was created using the in-house design component library.

- - ALM workflow - - Close - - - ALM workflow - -

Prototyping

-

As part of the testing and usability study process, I created a prototype that demonstrated some of the basic layouts and IA for users to explore and provide feedback on. This process evolved over time and, eventually, became a full-fledged website that utilized static data and was continuously updated as users provided feedback.

-
- View prototypeopen link in a new window - -
-
- -
-

Final thoughts

-
-

- In review, I believe that this process helped to flush out a great number of questions and concerns, while also demonstrating that their is a solid platform in which to build the full application on. -

-

- The findings discovered through the process were taken to the Project Stakeholders, which were then used to create additional design stories and discussions with the development teams.

-
- -
-
-
-
- - - -
-
- -
-
- -
Site
-
-
- -
- - -
-
-
- -
Social
-
-
- -
-
- -
-
-
-
-
-
-
-
-
- Copyright © 2008-2025 - - Adam J. Jolicoeur - -
- -
-
- - - - - - - - -

Application Lifecycle Management

A one-stop-shop for a team's planning and project lifecycle management.
Role

Interaction Designer, Prototypes

Areas

Wireframes, user paths, usability, prototyping

Challenge

The greater project team was using multiple project management tools, code repositories, and application development processes, with none of them talking to each other. This project takes all of those areas of concern and brings them together into a single, cohesive interface.

The Process

Before starting on the Application Lifecycle Management project, it was determined that the following areas would be need to be covered: list of target users, a user flow, wireframes, and, potentially, prototypes for user testings and feasibility.

Target Users

Through discussions with Stakeholders and Project Management, it was decided that the target users would be set in tiers -General Users(those who need to add and interact with issues, update project assets, and interact daily - a mix of designers and developers);Project Managers(organizers of work, set deadlines and release dates), andAdministrators(control any integrations, add-ons, and access).

Application Lifecycle Management flow

Image of the ALM workflow

Wireframes and Workflows

For each section of the ALM application, workflows and wireframes were used to identify possible user paths, as well as to strategize initial designs before moving on to high fidelity mockups and prototypes.

From Work Items to Development

Goals:

  • Communicates to the user that direct access to developing the Work Item is available in a single click.
  • Implementation is unobtrusive and implies navigation.
  • Location will not accidentally be clicked, allowing for enough real estate for line lengths and other meta data. The location of the integration should also imply moving forward.
  • Ordered by recommendation - require users to fill in one area before moving on.
  • As a button, it needs to have a prominent place yet not take the place of a primary button (in style).

Steps to complete the process:

Step 1 of the ALM wireframes
Step 2 of the ALM wireframes
Step 3 of the ALM wireframes
Wireframe of the work item to coding experience
Wireframe

This wireframe was created with call outs in order to communicate my thoughts around the design to anyone who saw it, but could not talk with me. Specifically, this worked extremely well when working with colleagues in other time zones where our working ours did not match up.

From these workflows and wireframes, it was determined that additional questions needed to be answered:

  • How do we handle accuracy between the linking of work items?
  • If the work items has a fine name and line number, is the commit SHA also used to help identify the connection?
  • Are we able to type the URL in a browser and navigate to the work item? (Does it have a unique link or is it randomly generated each time?)

Visual Design

After completing the wireframes and flows, a sample visual design was created. This design was created using the in-house design component library.

Image of the user flow

Prototyping

As part of the testing and usability study process, I created a prototype that demonstrated some of the basic layouts and IA for users to explore and provide feedback on. This process evolved over time and, eventually, became a full-fledged website that utilized static data and was continuously updated as users provided feedback.

Final thoughts

In review, I believe that this process helped to flush out a great number of questions and concerns, while also demonstrating that their is a solid platform in which to build the full application on.

The findings discovered through the process were taken to the Project Stakeholders, which were then used to create additional design stories and discussions with the development teams.

- - -
- - - + } \ No newline at end of file diff --git a/docs/designs/customer-engagement/index.html b/docs/designs/customer-engagement/index.html index ffe4a6dc..3f2e0718 100644 --- a/docs/designs/customer-engagement/index.html +++ b/docs/designs/customer-engagement/index.html @@ -1,542 +1,23 @@ - - - - - - - - Customer Engagement App | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Customer Engagement App

-

- For this project, I was tasked with improving the overall user experience for tracking customer engagement and marketing campaigns. This project included creating color palettes, new UI components, personas, and user journeys. -

- - -
-
-
- -
Role
-
Interaction Designer, Visual Designer
-
Areas
-
Wireframes, Visual Designs
-
Challenge
-
For this project, I was tasked with updating an old user interface to increase usability and visual styling to match a more modern aesthetic.
-
-
-
-
-
-

Goals

-

The goals of this project were to improve efficiency, upgrade the visual aesthetic, and enhance visual awareness.

-

Sitemap (alpha)

-

Before starting on the updated design for the Customer Engagement App (CEA), I first took to creating an updated sitemap. This allowed me to set a basic path for users to navigate through the application, while also separating the pieces of the application into useful areas.

-
- - Sitemap for the alpha version of the Customer Engagement App - - Close - - - Sitemap for the alpha version of the Customer Engagement App -

Customer Engagement App

For this project, I was tasked with improving the overall user experience for tracking customer engagement and marketing campaigns. This project included creating color palettes, new UI components, personas, and user journeys.
Role

Interaction Designer, Visual Designer

Areas

Wireframes, Visual Designs

Challenge

For this project, I was tasked with updating an old user interface to increase usability and visual styling to match a more modern aesthetic.

Goals

The goals of this project were toimproveefficiency,upgradethe visual aesthetic, andenhancevisual awareness.

Sitemap (alpha)

Before starting on the updated design for the Customer Engagement App (CEA), I first took to creating an updated sitemap. This allowed me to set a basic path for users to navigate through the application, while also separating the pieces of the application into useful areas.

Sitemap for the alpha version of the Customer Engagement AppCloseSitemap for the alpha version of the Customer Engagement App -
-

Wireframes

-

I created a set of wireframes that could be quickly iterated on for presenting ideas to project stakeholders and other interested parties.

-
- Example visual design for the navigation variations in the Customer Engagement App - View PDFOpen PDF in new window -

Wireframes

I created a set of wireframes that could be quickly iterated on for presenting ideas to project stakeholders and other interested parties.

Example visual design for the navigation variations in the Customer Engagement App
View PDFOpen PDF in new window -
-

Visual Designs

-

These visual designs are a small sampling of the final screens that were implemented as part of the completion of this project. The Dashboard, Reporting screen, and Settings page were considered the high-value items and contained the majority of the different components that would be used across the project. This set the baseline for future screens and allowed the development team to create a component library in which to build upon.

-
-
-
-

Application Dashboard

-
- - Example visual design for the primary dashboard in the Customer Engagement App - - Close - - - Example visual design for the primary dashboard in the Customer Engagement App - -
-
-
-
-
-

Engagement Reporting

-
- - Example visual design for the engagement dashboard in the Customer Engagement App - - Close - - - Example visual design for the engagement dashboard in the Customer Engagement App - -
-
-
-
-
-
-
-

Settings

-
- - Example visual design for the settings page in the Customer Engagement App - - Close - - - Example visual design for the settings page in the Customer Engagement App - -
-
-
-
-
-

The color palette and simplified component examples were some of the first items created, in order to provide the development team with a baseline in which to build the environment from.

-
-
-
-

Color Palette

-
- - Color palette created for the Customer Engagement App - - Close - - - Color palette created for the Customer Engagement App - -
-
-
-
-
-

Component Examples

-
- - An example of the types of components found in the Customer Engagement App - - Close - - - An example of the types of components found in the Customer Engagement App - -
-
-
-
-
-
-
-

Navigation

-
- - Example visual design for the navigation variations in the Customer Engagement App - - Close - - - Example visual design for the navigation variations in the Customer Engagement App - -
-
-
-
-
- -
-

Final thoughts

-
-

I believe that the process used for this project, albeit different, fit within the framework given and met all of the requirements as laid out by the Project Management Team. In the end, a new interface was created that met all of the requirements and was based off of clear steps and proper research. Competitively, this new design met, and often surpassed, expectations when compared to what was in use prior to this project.

-
- -
-
-
-
- - - -

Visual Designs

These visual designs are a small sampling of the final screens that were implemented as part of the completion of this project. The Dashboard, Reporting screen, and Settings page were considered the high-value items and contained the majority of the different components that would be used across the project. This set the baseline for future screens and allowed the development team to create a component library in which to build upon.

Example visual design for the primary dashboard in the Customer Engagement App
CEA Engagement Dashboard

The color palette and simplified component examples were some of the first items created, in order to provide the development team with a baseline in which to build the environment from.

Example visual design for the settings page in the Customer Engagement App
An example of the types of components found in the Customer Engagement App
Example visual design for the navigation variations in the Customer Engagement App
Final thoughts

I believe that the process used for this project, albeit different, fit within the framework given and met all of the requirements as laid out by the Project Management Team. In the end, a new interface was created that met all of the requirements and was based off of clear steps and proper research. Competitively, this new design met, and often surpassed, expectations when compared to what was in use prior to this project.

- - - - - - + } \ No newline at end of file diff --git a/docs/designs/district25/index.html b/docs/designs/district25/index.html index f11c531d..ca343806 100644 --- a/docs/designs/district25/index.html +++ b/docs/designs/district25/index.html @@ -1,329 +1,15 @@ - - - - - - - - District 25 website | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

District 25 website

-

- A website revamp for the 25th Masonic District of Masons in Massachusetts. -

- - - - - - - - - + } \ No newline at end of file diff --git a/docs/designs/index.html b/docs/designs/index.html index ccb208e6..2bae9d5f 100644 --- a/docs/designs/index.html +++ b/docs/designs/index.html @@ -1,438 +1,15 @@ - - - - - - - - Designs | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Designs

-

- Collaborate. Learn. Delight. -

- - - -
-
-
-
-

Task-It!

-

One enterprise task management system to rule them all.

-
- the journey -
-
-
-
-
-
-
- -
-
-
- Application Lifecycle Management thumbnail -
-
-

Application Lifecycle Management

-

A one-stop-shop for a team's planning and project lifecycle management.

- the journey -
-
-
- -
-
-
-

Customer Engagement App

-

End-to-end tracking of customer engagement and marketing campaigns.

- the journey -
-
- Customer Engagement App Dashboard thumbnail -
-
-
- -
-
-
- Switchback Timetrak thumbnail -
-
-

Switchback TimeTrak

-

The goal of this redesign was to create a simplistic system to easily access recent log entries, active projects, and team calendars. From this dashboard, users can quickly see these items, in addition to providing quick navigation items for in-depth reporting.

-

- Sketch Bootstrap Font Awesome -

-
-
-
- -
-
-
-

Structure Cloud

-

For this project, I was tasked with converting the UI of a COBOL application into something that would work with the modern web. The task was very challenging, in that one of the main requirements was to keep the layout as close to the original application as possible (in order to minimize the amount of relearning existing users would need to do), while also providing a clean UI that would attract new users to the platform.

-

- Sketch Font Awesome Visual Studio -

-
-
- Structure Cloud UI screenshot -
-
-
- -
-
-
-

Presentations

-

I've created many presentations over the years and recently began to transition them to Figma using the prototyping functionality. -

-
-
-
-
- - Portfolio presentation slide image - Portfolio Review - -
-
- - Color Picker presentation slide example - Color Picker - - -
-
-
- -
- -
-
- -
-
- -
Site
-
-
- -
- - -
-
-
- -
Social
-
-
- -
-
- -
-
-
-
-
-
-
-
-
- Copyright © 2008-2025 - - Adam J. Jolicoeur - -
- -
-
- - - - - - - - -

Designs

Collaborate. Learn. Delight.
Thumbnail of Task It project screen
Project One
Task-It!

One enterprise task management system to rule them all.

Project One
Task-It!

One enterprise task management system to rule them all.

Thumbnail of Task It project screen
Thumbnail of project screen Thumbnail of project screen
Thumbnail of ALM project screen
Project Two
Application Management

A one-stop-shop for a team's planning and project lifecycle management.

Project Two
Application Management

A one-stop-shop for a team's planning and project lifecycle management.

Thumbnail of ALM project screen
Thumbnail of project screenThumbnail of project screen
Thumbnail of Customer Engagement project screen
Project Three
Customer Engagement

End-to-end tracking of customer engagement and marketing campaigns.

Project Three
Customer Engagement

End-to-end tracking of customer engagement and marketing campaigns.

Thumbnail of Customer Engagement project screen
Thumbnail of Timetrak project screen
Project Four
Switchback TimeTrak

The goal of this redesign was to create a simplistic system to easily access recent log entries, active projects, and team calendars. From this dashboard, users can quickly see these items, in addition to providing quick navigation items for in-depth reporting.

Project Four
Switchback TimeTrak

The goal of this redesign was to create a simplistic system to easily access recent log entries, active projects, and team calendars. From this dashboard, users can quickly see these items, in addition to providing quick navigation items for in-depth reporting.

Thumbnail of Timetrak project screen
Thumbnail of demo screen
Project Five
Structure Cloud

For this project, I was tasked with converting the UI of a COBOL application into something that would work with the modern web. The task was very challenging, in that one of the main requirements was to keep the layout as close to the original application as possible (in order to minimize the amount of relearning existing users would need to do), while also providing a clean UI that would attract new users to the platform.

Project Five
Structure Cloud

For this project, I was tasked with converting the UI of a COBOL application into something that would work with the modern web. The task was very challenging, in that one of the main requirements was to keep the layout as close to the original application as possible (in order to minimize the amount of relearning existing users would need to do), while also providing a clean UI that would attract new users to the platform.

Thumbnail of demo screen

Presentations

I've created many presentations over the years and recently began to transition them to Figma using the prototyping functionality.

- - -
- - - + } \ No newline at end of file diff --git a/docs/designs/task-it/index.html b/docs/designs/task-it/index.html index ad58a2a2..8a1bdb8e 100644 --- a/docs/designs/task-it/index.html +++ b/docs/designs/task-it/index.html @@ -1,583 +1,21 @@ - - - - - - - - Task-It! | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Task-It!

-

- One enterprise task management system to rule them all. -

- - -

Task-It!

One enterprise task management system to rule them all.
-
-
-
- -
-
Role
-
Lead Designer
-
Areas
-
User research, Wireframes, User journeys, Mockups, Prototyping
-
Problem
-
After more than a decade of minimal updates, multiple subscription services, and independent teams, it became apparent that a single, scalable solution was needed. This project was to replace the existing systems, eliminating costs and overhead.
-
Challenge
-
With multiple systems container millions of tasks (both current and historical) as well as a growing need for various integrations, it was apparent that the user base would be the biggest challenge. Creating something that could not only handle all of the various methods of work, but also the vast historical nature of teams, presented a very unique situation. Additionally, the product had to be one that all users could utilize, no matter their working method. This included, but was not limited to, users with accessibility needs, users who preferred "terminal" or "keyboard" commands, and those who relied on standard keyboard-mouse usage.
-
Constraints
-
The biggest constraint was that of time. As each day passed, users were onboarded to either the older solution or to products that required licenses and cost the company money. The team was given one year to put together an initial release to be announced at an upcoming conference.
-
-
-
-
-
-
-

The Process

-

Before any design work (wireframes, mockups, prototypes) could begin, extensive user research and testing was needed.

-

Research methods with example questions: -

    -
  • User interviews -
      -
    • Ask users what their role is on their product team.
    • -
    • What product(s) do they use to manage their work?
    • -
    • If they do not use the existing internal product, why not?
    • -
    -
  • -
  • Competitive analysis -
      -
    • What products are used internally, besides the previous internal-built system?
    • -
    • Why are they used? What do they provide that the current internal system does not?
    • -
    -
  • -
  • On-hand testing -
      -
    • As a user, I needed to work within the system we were working to replace so that I can find the issues that currently exist.
    • -
    • Findings were compared against user interviews. Those interviews were also used as a basis for various testing methods.
    • -
    -
  • -
  • Observe users -
      -
    • Watch how users use the products: where do they always visit? What tasks are they always performing?
    • -
    -
  • -
-

-

Once a baseline had been established, the first round of user flow diagrams and analysis took place. Each step in the various user flows had two goals: -

    -
  1. Follow user expectations -
      -
    • Users expected to be able to perform basic tasks, such as creating work items, viewing work items, and organizing their work in a single system.
    • -
    -
  2. -
  3. Simplify existing processes -
      -
    • Users would not accept a more complicated process. Interviews taught me that anything more complicated than what they had would be a deal-breaker for switching to, no matter the directives from management.
    • -
    -
  4. -
-

-

Target Audience

-

For the initial release (scoped internally as a "beta"), the target audience consisted of Individual Contributors (IC), with a mix of high-interaction and low-interaction users. These were categorized as "Contributors", "Owners", and "Viewers".

-
    -
  • Contributor -
      -
    • Those who actively added items to a team's task queue.
    • -
    -
  • -
  • Owner -
      -
    • Individuals who were, at a high-level, responsible for the delivery and success daily and long-term tasks and goals. While not ICs, Owners had a direct hand in what tasks teams took on.
    • -
    -
  • -
  • Viewer -
      -
    • Those who stayed on the "outside" of the day-to-day operations, but could influence the work taking place. Viewers were not considered to be a top-level user, but the entire process had to take into account their work. If things became harder for them to see/find, then they were likely to become a blocker to adoption.
    • -
    -
  • -
-

After discussions with Project Management (PM), it was determined that the target audience would be broken down into tiers: Tier 1 and Tier 2. -

    -
  • Tier 1 consisted of those who used the existing solutions multiple times per day and could assist with driving adoption. These were the Contributors. -
  • -
  • Tier 2 consisted of those who interactive with existing solutions on a weekly basis, and then only to monitor the work being done by those in Tier 1. -
  • -
-

-

User flows, Wireframes, and Mockups

-

For the initial Task Details view, user flows and wireframes were used to identify possible errors. The findings from this work would go on to determine the direction of the final mockups.

-
-
-

User flows

-
- Image of the user flow -
Basic user flow - - Expand - - open image in a new window - -
-
-
-
-

User states

-
- Image of the various user flow states -
User flow states - - Expand - - open image in a new window - -
-
-
-
-

Initial findings

-

Based off of these user flows, I determined that the success and failures paths needed to be looked at further. Depending on the user, these paths had the potential to break experiences and decrease the usability and delight in the product. -

-
-
-

Wireframes

-

When creating wireframes, I start by taking an existing components (whether already in the application or from the component library in use) and lay out my page. From there, I begin to add some details (using the redacted script font) and basic headings. This is then reviewed with PM, Development, and, if available, fellow UX designers.

- -
-
-

Mockups

-

After reviews have been completed on the wireframes, mockups are created. In my process, I utilize mockups to get the full look/feel of the page without interactions. Once completed, these are used for user testing as well as final review with the development team.

- -
-
-
-
- - Image of the task details wireframe - Image of the first version of the task details mockup - -
-
-

Testing and Revisions

-

As part of the iterative process, I consistently looked at user feedback and heat-mapping to determine if there were any changes needed. From the beginning, it was known that additional attributes would be made available to users and that the Task Details page would have to be able to adapt accordingly.

-

As part of the testing process, I created a card-sorting survey for users, where I included all of the existing attributes, as well as some future-planned attributes, and asked users to order them by priority. Priority was determined by the user, with the only prompt being "what attribute(s) are required for you to get your work done in the most efficient manner?".

-
- Image of the user testing process -
User testing card sorting -
-
-

Revisions

-

After analyzing the results of the card-sorting user testing, additional mockups were created to task with the updated attribute priorities.

-
-
-
- Image of the first version of the task details mockup -
Version 2 - - Expand - - open image in a new window - -
-
-
-
-
- Image of the first version of the task details mockup -
Version 3 - - Expand - - open image in a new window - -
-
-
-
-
- Image of the first version of the task details mockup -
Version 4 - - Expand - - open image in a new window - -
-
-
-
-
- -
-

Final thoughts

-
-

Throughout the design process, it became clear that although the initial design solved many of the problems users faced with existing systems, there was plenty of room in which to improve. -

-

From the user testing sessions, specifically card sorting, I was able to adjust the layout and direction of the task details page without negatively impact user's experiences.

-

By working the development team, we were able to quickly role out changes to users and compare the new metrics to those of previous iterations. These metrics became the new baseline for future designs and detail screens across the product.

-
- -
-
-
-
- - - -
-
- -
-
- -
Site
-
-
- -
- - -
-
-
- -
Social
-
-
- -
-
- -
-
-
-
-
-
-
-
-
- Copyright © 2008-2025 - - Adam J. Jolicoeur - -
- -
-
- - - - - - - - -
Role

Lead Designer

Areas

User research, Wireframes, User journeys, Mockups, Prototyping

Problem

After more than a decade of minimal updates, multiple subscription services, and independent teams, it became apparent that a single, scalable solution was needed. This project was to replace the existing systems, eliminating costs and overhead.

Challenge

With multiple systems container millions of tasks (both current and historical) as well as a growing need for various integrations, it was apparent that the user base would be the biggest challenge. Creating something that could not only handle all of the various methods of work, but also the vast historical nature of teams, presented a very unique situation. Additionally, the product had to be one that all users could utilize, no matter their working method. This included, but was not limited to, users with accessibility needs, users who preferred "terminal" or "keyboard" commands, and those who relied on standard keyboard-mouse usage.

Constraints

The biggest constraint was that of time. As each day passed, users were onboarded to either the older solution or to products that required licenses and cost the company money. The team was given one year to put together an initial release to be announced at an upcoming conference.

The Process

Before any design work (wireframes, mockups, prototypes) could begin, extensive user research and testing was needed.

Research methods with example questions:

  • User interviews
    • Ask users what their role is on their product team.
    • What product(s) do they use to manage their work?
    • If they do not use the existing internal product, why not?
  • Competitive analysis
    • What products are used internally, besides the previous internal-built system?
    • Why are they used? What do they provide that the current internal system does not?
  • On-hand testing
    • As a user, I needed to work within the system we were working to replace so that I can find the issues that currently exist.
    • Findings were compared against user interviews. Those interviews were also used as a basis for various testing methods.
  • Observe users
    • Watch how users use the products: where do they always visit? What tasks are they always performing?

Once a baseline had been established, the first round of user flow diagrams and analysis took place. Each step in the various user flows had two goals:

  1. Follow user expectations
    • Users expected to be able to perform basic tasks, such as creating work items, viewing work items, and organizing their work in a single system.
  2. Simplify existing processes
    • Users would not accept a more complicated process. Interviews taught me that anything more complicated than what they had would be a deal-breaker for switching to, no matter the directives from management.

Target Audience

For the initial release (scoped internally as a "beta"), the target audience consisted of Individual Contributors (IC), with a mix of high-interaction and low-interaction users. These were categorized as "Contributors", "Owners", and "Viewers".

  • Contributor
    • Those who actively added items to a team's task queue.
  • Owner
    • Individuals who were, at a high-level, responsible for the delivery and success daily and long-term tasks and goals. While not ICs,Ownershad a direct hand in what tasks teams took on.
  • Viewer
    • Those who stayed on the "outside" of the day-to-day operations, but could influence the work taking place.Viewerswere not considered to be a top-level user, but the entire process had to take into account their work. If things became harder for them to see/find, then they were likely to become a blocker to adoption.

After discussions with Project Management (PM), it was determined that the target audience would be broken down into tiers:Tier 1andTier 2.

  • Tier 1consisted of those who used the existing solutions multiple times per day and could assist with driving adoption. These were theContributors.
  • Tier 2consisted of those who interactive with existing solutions on a weekly basis, and then only to monitor the work being done by those in Tier 1.

User flows, Wireframes, and Mockups

For the initial Task Details view, user flows and wireframes were used to identify possible errors. The findings from this work would go on to determine the direction of the final mockups.

Image of the user flow
Image of the various user flow states

Initial findings

Based off of these user flows, I determined that the success and failures paths needed to be looked at further. Depending on the user, these paths had the potential to break experiences and decrease the usability and delight in the product.

Wireframes

When creating wireframes, I start by taking an existing components (whether already in the application or from the component library in use) and lay out my page. From there, I begin to add some details (using theredacted scriptfont) and basic headings. This is then reviewed with PM, Development, and, if available, fellow UX designers.

Mockups

After reviews have been completed on the wireframes, mockups are created. In my process, I utilize mockups to get the full look/feel of the page without interactions. Once completed, these are used for user testing as well as final review with the development team.

Image of the task details wireframe Image of the first version of the task details mockup

Testing and Revisions

As part of the iterative process, I consistently looked at user feedback and heat-mapping to determine if there were any changes needed. From the beginning, it was known that additional attributes would be made available to users and that the Task Details page would have to be able to adapt accordingly.

As part of the testing process, I created a card-sorting survey for users, where I included all of the existing attributes, as well as some future-planned attributes, and asked users to order them by priority. Priority was determined by the user, with the only prompt being "what attribute(s) are required for you to get your work done in the most efficient manner?".

Image of the user testing process

Revisions

After analyzing the results of the card-sorting user testing, additional mockups were created to task with the updated attribute priorities.

Final thoughts

Throughout the design process, it became clear that although the initial design solved many of the problems users faced with existing systems, there was plenty of room in which to improve.

From the user testing sessions, specifically card sorting, I was able to adjust the layout and direction of the task details page without negatively impact user's experiences.

By working the development team, we were able to quickly role out changes to users and compare the new metrics to those of previous iterations. These metrics became the new baseline for future designs and detail screens across the product.

- - - - - - + } \ No newline at end of file diff --git a/docs/designs/timetrak/index.html b/docs/designs/timetrak/index.html index 64b9621a..f53fc813 100644 --- a/docs/designs/timetrak/index.html +++ b/docs/designs/timetrak/index.html @@ -1,329 +1,15 @@ - - - - - - - - TimeTrak by Switchback | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

TimeTrak by Switchback

-

- Time tracking software for Switchback, Inc. -

- - - - - - - - - + } \ No newline at end of file diff --git a/docs/development/code/index.html b/docs/development/code/index.html index 56da346e..8665537e 100644 --- a/docs/development/code/index.html +++ b/docs/development/code/index.html @@ -1,339 +1,15 @@ - - - - - - - - redesign | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

redesign

-

- A walkthrough of how I redesigned adamjolicoeur.com. -

- - -
-
-
-

What I used

-

- Bootstrap, VSCode, GitHub, Netlify, Figma, iOS Simulator -

-
-
-
- -
- - - - - + } \ No newline at end of file diff --git a/docs/development/examples/index.html b/docs/development/examples/index.html index 727d40f3..b6b61a62 100644 --- a/docs/development/examples/index.html +++ b/docs/development/examples/index.html @@ -1,377 +1,15 @@ - - - - - - - - codepen examples | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

codepen examples

-

- When I'm trying out new ideas, I'll often go to codepen to riff on them, but also to see what is already out there. -

- - -
- - - - - - - - - - - - - - - - - - - - - - - - - -
Top CodepensDescription
SwitchTrack A calendar in a webapp, part of a time tracking system
CAS Ripper Link to Codepen example demonstrating basic example of an architectural drawing library
Animated Cards on Glass Link to Codepen example showing animated cards on simulated glass
-

- - - See all of my work on CodePen - - -
- -
- - - - - + } \ No newline at end of file diff --git a/docs/development/index.html b/docs/development/index.html index 4725203f..82794b9b 100644 --- a/docs/development/index.html +++ b/docs/development/index.html @@ -1,511 +1,15 @@ - - - - - - - - Development | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Development

-

- A selection of code examples from various projects that I've worked on. -

- - -
-

Prototypes

-
- -
-
-
-

Integration Walkthrough

- -
-
-
-
-
-
-

kubevirt.io

- -
-
-
-
-
- -
-
-
-

Red Hat Developer Design Manual

- -
-
-
-
-
-
-

PatternFly.org

- -
-
-
-
-
-
-

Personal projects

-
- -
-
-
-

Alfred

- -
-
-
- -
-
-
-

Stream Deck icons

- -
-
-
- -
-
-
-

Collect Some More

-

a collections app for iOS

- -
-
-
-
-

Oldies but goodies

-
-
-
-
-

fabric8-pattern.library

- -
-
-
-
- -

Codepen

- - Examples on Codepen - - -
-

- See the Pen - SwitchTrack - Calendar by Adam Jolicoeur (@AdamJolicoeur) - on CodePen. -

- -
-
- -
- - - - - + } \ No newline at end of file diff --git a/docs/development/prototypes/index.html b/docs/development/prototypes/index.html index 636c5632..d517dc54 100644 --- a/docs/development/prototypes/index.html +++ b/docs/development/prototypes/index.html @@ -1,380 +1,15 @@ - - - - - - - - Prototypes | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Prototypes

-

- When I work on a design, I prototype as I go. This allows me to see what I'm doing in a working environment, while keeping expectations realistic. -

- - -
-
-
-

- Sites -

-
-
-
-
-

PatternFly 4

-

In support of the 4th release of PatternFly, I worked with a group of designers to create a modern, responsive take on the PatternFly website. Using a responsive layout with SVGs that move with the page, I create clean aesthetic that would flow through the rest of the site.

- - View PatternFly 4 demo - -
-
-

Feature flags

-

As part of a usability study, I worked with a UX Researcher to test out different variations of a Feature Flag, or notifier, for aspects and pages of an application that are either in a pre-release state, or have an unreleased element in use.

- - View Feature Flags demo - -
-
-
-
-
-
-

Additional examples:

-
-
- - - - - - - - + } \ No newline at end of file diff --git a/docs/feed.json b/docs/feed.json index e637fd1c..6751f117 100644 --- a/docs/feed.json +++ b/docs/feed.json @@ -27,27 +27,107 @@ }, "items": [ { - "id": "/alfred/workflows/", - "url": "/alfred/workflows/", - "title": "Alfred Workflows", - "date_published": "2025-06-13T15:52:22Z", - "date": "2025-06-13T15:52:22Z" + "id": "/designs/task-it/", + "url": "/designs/task-it/", + "title": "Task-It!", + "date_published": "2025-06-30T17:28:48Z", + "date": "2025-06-30T17:28:48Z" } , { - "id": "/reference/", - "url": "/reference/", - "title": "Reference links", - "date_published": "2025-06-13T15:17:40Z", - "date": "2025-06-13T15:17:40Z" + "id": "/designs/customer-engagement/", + "url": "/designs/customer-engagement/", + "title": "Customer Engagement App", + "date_published": "2025-06-30T17:28:48Z", + "date": "2025-06-30T17:28:48Z" + } + , + { + "id": "/designs/alm/", + "url": "/designs/alm/", + "title": "Application Lifecycle Management", + "date_published": "2025-06-30T17:28:48Z", + "date": "2025-06-30T17:28:48Z" } , { "id": "/development/", "url": "/development/", "title": "Development", - "date_published": "2025-06-12T18:44:37Z", - "date": "2025-06-12T18:44:37Z" + "date_published": "2025-06-29T22:29:04Z", + "date": "2025-06-29T22:29:04Z" + } + , + { + "id": "/designs/", + "url": "/designs/", + "title": "Designs", + "date_published": "2025-06-29T22:25:49Z", + "date": "2025-06-29T22:25:49Z" + } + , + { + "id": "/uses/", + "url": "/uses/", + "title": "Uses", + "date_published": "2025-06-27T20:06:38Z", + "date": "2025-06-27T20:06:38Z" + } + , + { + "id": "/credits/", + "url": "/credits/", + "title": "Credits", + "date_published": "2025-06-27T20:06:38Z", + "date": "2025-06-27T20:06:38Z" + } + , + { + "id": "/connect/", + "url": "/connect/", + "title": "Connect", + "date_published": "2025-06-27T20:06:38Z", + "date": "2025-06-27T20:06:38Z" + } + , + { + "id": "/resume/", + "url": "/resume/", + "title": "Adam J. Jolicoeur", + "date_published": "2025-06-27T19:40:57Z", + "date": "2025-06-27T19:40:57Z" + } + , + { + "id": "/about/", + "url": "/about/", + "title": "About", + "date_published": "2025-06-27T19:40:57Z", + "date": "2025-06-27T19:40:57Z" + } + , + { + "id": "/testimonials/", + "url": "/testimonials/", + "title": "Testimonials", + "date_published": "2025-06-25T20:11:48Z", + "date": "2025-06-25T20:11:48Z" + } + , + { + "id": "/presentations/portfolio/", + "url": "/presentations/portfolio/", + "title": "Portfolio", + "date_published": "2025-06-20T18:51:06Z", + "date": "2025-06-20T18:51:06Z" + } + , + { + "id": "/presentations/color-picker/", + "url": "/presentations/color-picker/", + "title": "Color Picker", + "date_published": "2025-06-20T18:51:06Z", + "date": "2025-06-20T18:51:06Z" } , { @@ -90,30 +170,6 @@ "date": "2025-06-09T16:14:30Z" } , - { - "id": "/uses/", - "url": "/uses/", - "title": "Uses", - "date_published": "2025-06-09T12:20:32Z", - "date": "2025-06-09T12:20:32Z" - } - , - { - "id": "/resume/", - "url": "/resume/", - "title": "Adam J. Jolicoeur", - "date_published": "2025-06-09T12:20:32Z", - "date": "2025-06-09T12:20:32Z" - } - , - { - "id": "/credits/", - "url": "/credits/", - "title": "Credits", - "date_published": "2025-06-09T12:20:32Z", - "date": "2025-06-09T12:20:32Z" - } - , { "id": "/apps/", "url": "/apps/", @@ -122,22 +178,6 @@ "date": "2025-06-09T12:20:32Z" } , - { - "id": "/about/", - "url": "/about/", - "title": "About", - "date_published": "2025-06-09T12:20:32Z", - "date": "2025-06-09T12:20:32Z" - } - , - { - "id": "/connect/", - "url": "/connect/", - "title": "Connect", - "date_published": "2025-04-17T15:34:36Z", - "date": "2025-04-17T15:34:36Z" - } - , { "id": "/marketing/", "url": "/marketing/", @@ -146,38 +186,6 @@ "date": "2025-04-09T15:51:10Z" } , - { - "id": "/designs/task-it/", - "url": "/designs/task-it/", - "title": "Task-It!", - "date_published": "2025-02-07T16:20:37Z", - "date": "2025-02-07T16:20:37Z" - } - , - { - "id": "/testimonials/", - "url": "/testimonials/", - "title": "Testimonials", - "date_published": "2025-01-20T21:13:03Z", - "date": "2025-01-20T21:13:03Z" - } - , - { - "id": "/presentations/portfolio/", - "url": "/presentations/portfolio/", - "title": "Portfolio", - "date_published": "2025-01-20T21:13:03Z", - "date": "2025-01-20T21:13:03Z" - } - , - { - "id": "/presentations/color-picker/", - "url": "/presentations/color-picker/", - "title": "Color Picker", - "date_published": "2025-01-20T21:13:03Z", - "date": "2025-01-20T21:13:03Z" - } - , { "id": "/presentations/", "url": "/presentations/", @@ -186,14 +194,6 @@ "date": "2025-01-20T21:13:03Z" } , - { - "id": "/icons-and-branding/icons/", - "url": "/icons-and-branding/icons/", - "title": "Icons", - "date_published": "2025-01-20T21:13:03Z", - "date": "2025-01-20T21:13:03Z" - } - , { "id": "/icons-and-branding/", "url": "/icons-and-branding/", @@ -242,38 +242,6 @@ "date": "2025-01-20T21:13:03Z" } , - { - "id": "/designs/customer-engagement/", - "url": "/designs/customer-engagement/", - "title": "Customer Engagement App", - "date_published": "2025-01-20T21:13:03Z", - "date": "2025-01-20T21:13:03Z" - } - , - { - "id": "/designs/alm/", - "url": "/designs/alm/", - "title": "Application Lifecycle Management", - "date_published": "2025-01-20T21:13:03Z", - "date": "2025-01-20T21:13:03Z" - } - , - { - "id": "/designs/", - "url": "/designs/", - "title": "Designs", - "date_published": "2025-01-20T21:13:03Z", - "date": "2025-01-20T21:13:03Z" - } - , - { - "id": "/archives/archives/", - "url": "/archives/archives/", - "title": "Archived Pages", - "date_published": "2025-01-20T21:13:03Z", - "date": "2025-01-20T21:13:03Z" - } - , { "id": "/journeys/journeys/", "url": "/journeys/journeys/", diff --git a/docs/howto/index.html b/docs/howto/index.html deleted file mode 100644 index 91e3b8c9..00000000 --- a/docs/howto/index.html +++ /dev/null @@ -1,319 +0,0 @@ - - - - - - - - howto | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-

How to Use the Site #

- -
-
-
- - - - - - diff --git a/docs/icons-and-branding/icons/index.html b/docs/icons-and-branding/icons/index.html deleted file mode 100644 index db692862..00000000 --- a/docs/icons-and-branding/icons/index.html +++ /dev/null @@ -1,346 +0,0 @@ - - - - - - - - Icons | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Icons

-

- Various icons and libraries that I've created. -

- - -
-
- -
-

Icon library

-

- Switchback Icon Library -

Stream Deck

-
-
-
- -
- - - - - - - - diff --git a/docs/icons-and-branding/index.html b/docs/icons-and-branding/index.html index c11ad406..89bdee14 100644 --- a/docs/icons-and-branding/index.html +++ b/docs/icons-and-branding/index.html @@ -1,340 +1,15 @@ - - - - - - - - Icons and Branding | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Icons and Branding

-

- Various icons, icon packs, and branding elements from over the years. -

- - -
-
-
-
- Icons - Logos - Apparel -
-
-
-
- -
- - - - - + } \ No newline at end of file diff --git a/docs/img/ALM_planner.png b/docs/img/ALM_planner.png deleted file mode 100644 index 0470c2e1..00000000 Binary files a/docs/img/ALM_planner.png and /dev/null differ diff --git a/docs/img/ALM_planner.webp b/docs/img/ALM_planner.webp new file mode 100644 index 00000000..2288a47c Binary files /dev/null and b/docs/img/ALM_planner.webp differ diff --git a/docs/img/ALM_step1.png b/docs/img/ALM_step1.png deleted file mode 100644 index ae008d1b..00000000 Binary files a/docs/img/ALM_step1.png and /dev/null differ diff --git a/docs/img/ALM_step1.webp b/docs/img/ALM_step1.webp new file mode 100644 index 00000000..3f950773 Binary files /dev/null and b/docs/img/ALM_step1.webp differ diff --git a/docs/img/ALM_step2.png b/docs/img/ALM_step2.png deleted file mode 100644 index a79a86fe..00000000 Binary files a/docs/img/ALM_step2.png and /dev/null differ diff --git a/docs/img/ALM_step2.webp b/docs/img/ALM_step2.webp new file mode 100644 index 00000000..a624b774 Binary files /dev/null and b/docs/img/ALM_step2.webp differ diff --git a/docs/img/ALM_step3.png b/docs/img/ALM_step3.png deleted file mode 100644 index 9ef1ef93..00000000 Binary files a/docs/img/ALM_step3.png and /dev/null differ diff --git a/docs/img/ALM_step3.webp b/docs/img/ALM_step3.webp new file mode 100644 index 00000000..13822e8e Binary files /dev/null and b/docs/img/ALM_step3.webp differ diff --git a/docs/img/ALM_wireframe.png b/docs/img/ALM_wireframe.png deleted file mode 100644 index 31b9a613..00000000 Binary files a/docs/img/ALM_wireframe.png and /dev/null differ diff --git a/docs/img/ALM_wireframe.webp b/docs/img/ALM_wireframe.webp new file mode 100644 index 00000000..381759f3 Binary files /dev/null and b/docs/img/ALM_wireframe.webp differ diff --git a/docs/img/ALM_workflow.png b/docs/img/ALM_workflow.png deleted file mode 100644 index bdc4e4eb..00000000 Binary files a/docs/img/ALM_workflow.png and /dev/null differ diff --git a/docs/img/ALM_workflow.webp b/docs/img/ALM_workflow.webp new file mode 100644 index 00000000..1312d2c3 Binary files /dev/null and b/docs/img/ALM_workflow.webp differ diff --git a/docs/img/AdamJolicoeur_dot_com-minimal.png b/docs/img/AdamJolicoeur_dot_com-minimal.png deleted file mode 100644 index 3a535c9c..00000000 Binary files a/docs/img/AdamJolicoeur_dot_com-minimal.png and /dev/null differ diff --git a/docs/img/AdamJolicoeur_dot_com.png b/docs/img/AdamJolicoeur_dot_com.png deleted file mode 100644 index b9e78c3e..00000000 Binary files a/docs/img/AdamJolicoeur_dot_com.png and /dev/null differ diff --git a/docs/img/AdamJolicoeur_dot_com.webp b/docs/img/AdamJolicoeur_dot_com.webp new file mode 100644 index 00000000..be3c8e35 Binary files /dev/null and b/docs/img/AdamJolicoeur_dot_com.webp differ diff --git a/docs/img/AdamJolicoeur_social.png b/docs/img/AdamJolicoeur_social.png deleted file mode 100644 index ba0f0007..00000000 Binary files a/docs/img/AdamJolicoeur_social.png and /dev/null differ diff --git a/docs/img/Bootstrap5SocialImage.png b/docs/img/Bootstrap5SocialImage.png deleted file mode 100644 index c8507ed4..00000000 Binary files a/docs/img/Bootstrap5SocialImage.png and /dev/null differ diff --git a/docs/img/CAS_Figma_Cover.webp b/docs/img/CAS_Figma_Cover.webp new file mode 100644 index 00000000..089b35fd Binary files /dev/null and b/docs/img/CAS_Figma_Cover.webp differ diff --git a/docs/img/CEA_AssetExamples.png b/docs/img/CEA_AssetExamples.png deleted file mode 100644 index fa183a85..00000000 Binary files a/docs/img/CEA_AssetExamples.png and /dev/null differ diff --git a/docs/img/CEA_AssetExamples.webp b/docs/img/CEA_AssetExamples.webp new file mode 100644 index 00000000..c01617fd Binary files /dev/null and b/docs/img/CEA_AssetExamples.webp differ diff --git a/docs/img/CEA_ClientDetail.png b/docs/img/CEA_ClientDetail.png deleted file mode 100644 index 3011dcec..00000000 Binary files a/docs/img/CEA_ClientDetail.png and /dev/null differ diff --git a/docs/img/CEA_ClientDetail.webp b/docs/img/CEA_ClientDetail.webp new file mode 100644 index 00000000..bd7b3a7d Binary files /dev/null and b/docs/img/CEA_ClientDetail.webp differ diff --git a/docs/img/CEA_Dashboard.png b/docs/img/CEA_Dashboard.png deleted file mode 100644 index 877f35c0..00000000 Binary files a/docs/img/CEA_Dashboard.png and /dev/null differ diff --git a/docs/img/CEA_Dashboard.webp b/docs/img/CEA_Dashboard.webp new file mode 100644 index 00000000..1cebdfa0 Binary files /dev/null and b/docs/img/CEA_Dashboard.webp differ diff --git a/docs/img/CEA_Dashboard_Overview.pdf b/docs/img/CEA_Dashboard_Overview.pdf deleted file mode 100644 index c2a72995..00000000 Binary files a/docs/img/CEA_Dashboard_Overview.pdf and /dev/null differ diff --git a/docs/img/CEA_Dashboard_fix.png b/docs/img/CEA_Dashboard_fix.png deleted file mode 100644 index 5fad7ce2..00000000 Binary files a/docs/img/CEA_Dashboard_fix.png and /dev/null differ diff --git a/docs/img/CEA_Dashboard_fix.webp b/docs/img/CEA_Dashboard_fix.webp new file mode 100644 index 00000000..69cad205 Binary files /dev/null and b/docs/img/CEA_Dashboard_fix.webp differ diff --git a/docs/img/CEA_Engagement.png b/docs/img/CEA_Engagement.png deleted file mode 100644 index d3051351..00000000 Binary files a/docs/img/CEA_Engagement.png and /dev/null differ diff --git a/docs/img/CEA_Engagement.webp b/docs/img/CEA_Engagement.webp new file mode 100644 index 00000000..65b5f83a Binary files /dev/null and b/docs/img/CEA_Engagement.webp differ diff --git a/docs/img/CEA_Navigation.png b/docs/img/CEA_Navigation.png deleted file mode 100644 index 04d39524..00000000 Binary files a/docs/img/CEA_Navigation.png and /dev/null differ diff --git a/docs/img/CEA_Navigation.webp b/docs/img/CEA_Navigation.webp new file mode 100644 index 00000000..24a54bc3 Binary files /dev/null and b/docs/img/CEA_Navigation.webp differ diff --git a/docs/img/CEA_Palette.png b/docs/img/CEA_Palette.png deleted file mode 100644 index de5c09dc..00000000 Binary files a/docs/img/CEA_Palette.png and /dev/null differ diff --git a/docs/img/CEA_Palette.webp b/docs/img/CEA_Palette.webp new file mode 100644 index 00000000..06be6739 Binary files /dev/null and b/docs/img/CEA_Palette.webp differ diff --git a/docs/img/CEA_Settings.png b/docs/img/CEA_Settings.png deleted file mode 100644 index 6ca58186..00000000 Binary files a/docs/img/CEA_Settings.png and /dev/null differ diff --git a/docs/img/CEA_Settings.webp b/docs/img/CEA_Settings.webp new file mode 100644 index 00000000..39e19ae0 Binary files /dev/null and b/docs/img/CEA_Settings.webp differ diff --git a/docs/img/CEA_wireframe_first.png b/docs/img/CEA_wireframe_first.png deleted file mode 100644 index 80c1268b..00000000 Binary files a/docs/img/CEA_wireframe_first.png and /dev/null differ diff --git a/docs/img/CEA_wireframe_first.webp b/docs/img/CEA_wireframe_first.webp new file mode 100644 index 00000000..14231fe9 Binary files /dev/null and b/docs/img/CEA_wireframe_first.webp differ diff --git a/docs/img/CE_thumbnail.webp b/docs/img/CE_thumbnail.webp new file mode 100644 index 00000000..8ad7abc2 Binary files /dev/null and b/docs/img/CE_thumbnail.webp differ diff --git a/docs/img/Dashboardwireframe.png b/docs/img/Dashboardwireframe.png deleted file mode 100644 index 3c2db1eb..00000000 Binary files a/docs/img/Dashboardwireframe.png and /dev/null differ diff --git a/docs/img/District25Desktop.png b/docs/img/District25Desktop.png deleted file mode 100644 index 8a350d89..00000000 Binary files a/docs/img/District25Desktop.png and /dev/null differ diff --git a/docs/img/GamesAndThings_1024.webp b/docs/img/GamesAndThings_1024.webp new file mode 100644 index 00000000..ff282687 Binary files /dev/null and b/docs/img/GamesAndThings_1024.webp differ diff --git a/docs/img/GitHub_card.png b/docs/img/GitHub_card.png deleted file mode 100644 index c8c968a7..00000000 Binary files a/docs/img/GitHub_card.png and /dev/null differ diff --git a/docs/img/Jolicoeur_iOS-small.webp b/docs/img/Jolicoeur_iOS-small.webp new file mode 100644 index 00000000..b57a8fc2 Binary files /dev/null and b/docs/img/Jolicoeur_iOS-small.webp differ diff --git a/docs/img/Jolicoeur_iOS.png b/docs/img/Jolicoeur_iOS.png deleted file mode 100644 index 10f3df5a..00000000 Binary files a/docs/img/Jolicoeur_iOS.png and /dev/null differ diff --git a/docs/img/Jolicoeur_iOS.webp b/docs/img/Jolicoeur_iOS.webp new file mode 100644 index 00000000..30e51d3f Binary files /dev/null and b/docs/img/Jolicoeur_iOS.webp differ diff --git a/docs/img/OSIO-laptop-screen-1200.png b/docs/img/OSIO-laptop-screen-1200.png deleted file mode 100644 index f953d0d0..00000000 Binary files a/docs/img/OSIO-laptop-screen-1200.png and /dev/null differ diff --git a/docs/img/OSIO-laptop-screen-1200.webp b/docs/img/OSIO-laptop-screen-1200.webp new file mode 100644 index 00000000..7637e6d1 Binary files /dev/null and b/docs/img/OSIO-laptop-screen-1200.webp differ diff --git a/docs/img/OSIO_thumbnail.webp b/docs/img/OSIO_thumbnail.webp new file mode 100644 index 00000000..3bccbd9c Binary files /dev/null and b/docs/img/OSIO_thumbnail.webp differ diff --git a/docs/img/RHDManual_CreateArticles.png b/docs/img/RHDManual_CreateArticles.png deleted file mode 100644 index ecfe7a32..00000000 Binary files a/docs/img/RHDManual_CreateArticles.png and /dev/null differ diff --git a/docs/img/RHDManual_DesignResources.png b/docs/img/RHDManual_DesignResources.png deleted file mode 100644 index f905de8f..00000000 Binary files a/docs/img/RHDManual_DesignResources.png and /dev/null differ diff --git a/docs/img/RHDManual_Home.png b/docs/img/RHDManual_Home.png deleted file mode 100644 index eb2bf890..00000000 Binary files a/docs/img/RHDManual_Home.png and /dev/null differ diff --git a/docs/img/RPLOnePage.png b/docs/img/RPLOnePage.png deleted file mode 100644 index 979916b4..00000000 Binary files a/docs/img/RPLOnePage.png and /dev/null differ diff --git a/docs/img/SC_demo.png b/docs/img/SC_demo.png deleted file mode 100644 index c92d5bed..00000000 Binary files a/docs/img/SC_demo.png and /dev/null differ diff --git a/docs/img/SC_demo.webp b/docs/img/SC_demo.webp new file mode 100644 index 00000000..efee9ce6 Binary files /dev/null and b/docs/img/SC_demo.webp differ diff --git a/docs/img/SC_logo_cloud.png b/docs/img/SC_logo_cloud.png deleted file mode 100644 index b7c75296..00000000 Binary files a/docs/img/SC_logo_cloud.png and /dev/null differ diff --git a/docs/img/SC_logo_cloud2.png b/docs/img/SC_logo_cloud2.png deleted file mode 100644 index 5de24ffa..00000000 Binary files a/docs/img/SC_logo_cloud2.png and /dev/null differ diff --git a/docs/img/Scouters.png b/docs/img/Scouters.png deleted file mode 100644 index b5542450..00000000 Binary files a/docs/img/Scouters.png and /dev/null differ diff --git a/docs/img/Screenshot_charts.png b/docs/img/Screenshot_charts.png deleted file mode 100644 index d194806a..00000000 Binary files a/docs/img/Screenshot_charts.png and /dev/null differ diff --git a/docs/img/Sitemap_alpha.png b/docs/img/Sitemap_alpha.png deleted file mode 100644 index 3ca7fd76..00000000 Binary files a/docs/img/Sitemap_alpha.png and /dev/null differ diff --git a/docs/img/Sitemap_alpha.webp b/docs/img/Sitemap_alpha.webp new file mode 100644 index 00000000..846ea988 Binary files /dev/null and b/docs/img/Sitemap_alpha.webp differ diff --git a/docs/img/TLG2012.jpg b/docs/img/TLG2012.jpg deleted file mode 100644 index 71cddde5..00000000 Binary files a/docs/img/TLG2012.jpg and /dev/null differ diff --git a/docs/img/Timetrak.png b/docs/img/Timetrak.png deleted file mode 100644 index 4494b21d..00000000 Binary files a/docs/img/Timetrak.png and /dev/null differ diff --git a/docs/img/Timetrak.webp b/docs/img/Timetrak.webp new file mode 100644 index 00000000..f54713fe Binary files /dev/null and b/docs/img/Timetrak.webp differ diff --git a/docs/img/adam-j.png b/docs/img/adam-j.png deleted file mode 100644 index d680fea5..00000000 Binary files a/docs/img/adam-j.png and /dev/null differ diff --git a/docs/img/adamj-github.png b/docs/img/adamj-github.png deleted file mode 100644 index 1e7ce494..00000000 Binary files a/docs/img/adamj-github.png and /dev/null differ diff --git a/docs/img/ajolicoeur_wordcloud.png b/docs/img/ajolicoeur_wordcloud.png deleted file mode 100644 index e6066cb5..00000000 Binary files a/docs/img/ajolicoeur_wordcloud.png and /dev/null differ diff --git a/docs/img/ajolicoeur_wordcloud_writing.png b/docs/img/ajolicoeur_wordcloud_writing.png deleted file mode 100644 index 838fa78c..00000000 Binary files a/docs/img/ajolicoeur_wordcloud_writing.png and /dev/null differ diff --git a/docs/img/atom-pf-syntax.png b/docs/img/atom-pf-syntax.png deleted file mode 100644 index 457f193b..00000000 Binary files a/docs/img/atom-pf-syntax.png and /dev/null differ diff --git a/docs/img/atom-pf-theme.png b/docs/img/atom-pf-theme.png deleted file mode 100644 index 6dc2ac49..00000000 Binary files a/docs/img/atom-pf-theme.png and /dev/null differ diff --git a/docs/img/avatar-hires.jpg b/docs/img/avatar-hires.jpg deleted file mode 100644 index 80d0bc1d..00000000 Binary files a/docs/img/avatar-hires.jpg and /dev/null differ diff --git a/docs/img/avatar.png b/docs/img/avatar.png deleted file mode 100644 index a9baec09..00000000 Binary files a/docs/img/avatar.png and /dev/null differ diff --git a/docs/img/avatar.webp b/docs/img/avatar.webp new file mode 100644 index 00000000..3a78d800 Binary files /dev/null and b/docs/img/avatar.webp differ diff --git a/docs/img/avatar_500x500.webp b/docs/img/avatar_500x500.webp new file mode 100644 index 00000000..d11dfcfd Binary files /dev/null and b/docs/img/avatar_500x500.webp differ diff --git a/docs/img/banner.jpg b/docs/img/banner.jpg deleted file mode 100644 index 328745c8..00000000 Binary files a/docs/img/banner.jpg and /dev/null differ diff --git a/docs/img/blog_screenshot.webp b/docs/img/blog_screenshot.webp new file mode 100644 index 00000000..b5db54f6 Binary files /dev/null and b/docs/img/blog_screenshot.webp differ diff --git a/docs/img/colorPicker/slide0.png b/docs/img/colorPicker/slide0.png deleted file mode 100644 index 806269a0..00000000 Binary files a/docs/img/colorPicker/slide0.png and /dev/null differ diff --git a/docs/img/colorPicker/slide0.webp b/docs/img/colorPicker/slide0.webp new file mode 100644 index 00000000..8f6fb0c2 Binary files /dev/null and b/docs/img/colorPicker/slide0.webp differ diff --git a/docs/img/colorPicker/slide1.png b/docs/img/colorPicker/slide1.png deleted file mode 100644 index 4480ee6e..00000000 Binary files a/docs/img/colorPicker/slide1.png and /dev/null differ diff --git a/docs/img/colorPicker/slide1.webp b/docs/img/colorPicker/slide1.webp new file mode 100644 index 00000000..7cec5743 Binary files /dev/null and b/docs/img/colorPicker/slide1.webp differ diff --git a/docs/img/colorPicker/slide2.png b/docs/img/colorPicker/slide2.png deleted file mode 100644 index 54b41648..00000000 Binary files a/docs/img/colorPicker/slide2.png and /dev/null differ diff --git a/docs/img/colorPicker/slide2.webp b/docs/img/colorPicker/slide2.webp new file mode 100644 index 00000000..ebaf97a3 Binary files /dev/null and b/docs/img/colorPicker/slide2.webp differ diff --git a/docs/img/colorPicker/slide3.png b/docs/img/colorPicker/slide3.png deleted file mode 100644 index 7fed6aa7..00000000 Binary files a/docs/img/colorPicker/slide3.png and /dev/null differ diff --git a/docs/img/colorPicker/slide3.webp b/docs/img/colorPicker/slide3.webp new file mode 100644 index 00000000..998748cd Binary files /dev/null and b/docs/img/colorPicker/slide3.webp differ diff --git a/docs/img/colorPicker/slide4.png b/docs/img/colorPicker/slide4.png deleted file mode 100644 index f90b50d6..00000000 Binary files a/docs/img/colorPicker/slide4.png and /dev/null differ diff --git a/docs/img/colorPicker/slide4.webp b/docs/img/colorPicker/slide4.webp new file mode 100644 index 00000000..afc04e4a Binary files /dev/null and b/docs/img/colorPicker/slide4.webp differ diff --git a/docs/img/colorPicker/slide5.png b/docs/img/colorPicker/slide5.png deleted file mode 100644 index 349f24da..00000000 Binary files a/docs/img/colorPicker/slide5.png and /dev/null differ diff --git a/docs/img/colorPicker/slide5.webp b/docs/img/colorPicker/slide5.webp new file mode 100644 index 00000000..fa354396 Binary files /dev/null and b/docs/img/colorPicker/slide5.webp differ diff --git a/docs/img/colorPicker/thumbnail.webp b/docs/img/colorPicker/thumbnail.webp new file mode 100644 index 00000000..b5debc85 Binary files /dev/null and b/docs/img/colorPicker/thumbnail.webp differ diff --git a/docs/img/curved-lines@2x.png b/docs/img/curved-lines@2x.png deleted file mode 100644 index 85ba17cb..00000000 Binary files a/docs/img/curved-lines@2x.png and /dev/null differ diff --git a/docs/img/dashboard_minimal.png b/docs/img/dashboard_minimal.png deleted file mode 100644 index c9c83393..00000000 Binary files a/docs/img/dashboard_minimal.png and /dev/null differ diff --git a/docs/img/dashboard_minimal.webp b/docs/img/dashboard_minimal.webp new file mode 100644 index 00000000..72085c05 Binary files /dev/null and b/docs/img/dashboard_minimal.webp differ diff --git a/docs/img/fabric8-package.png b/docs/img/fabric8-package.png deleted file mode 100644 index 43a5b4a9..00000000 Binary files a/docs/img/fabric8-package.png and /dev/null differ diff --git a/docs/img/game-tracker.webp b/docs/img/game-tracker.webp new file mode 100644 index 00000000..c6b9ad11 Binary files /dev/null and b/docs/img/game-tracker.webp differ diff --git a/docs/img/headshot-hires.jpg b/docs/img/headshot-hires.jpg deleted file mode 100644 index 050ee0c7..00000000 Binary files a/docs/img/headshot-hires.jpg and /dev/null differ diff --git a/docs/img/headshot.jpg b/docs/img/headshot.jpg deleted file mode 100644 index 809f5555..00000000 Binary files a/docs/img/headshot.jpg and /dev/null differ diff --git a/docs/img/jolicoeur-blog.svg b/docs/img/jolicoeur-blog.svg new file mode 100644 index 00000000..72095f7e --- /dev/null +++ b/docs/img/jolicoeur-blog.svg @@ -0,0 +1,4 @@ + + + + diff --git a/docs/img/linkedin_card.png b/docs/img/linkedin_card.png deleted file mode 100644 index 6b4686f1..00000000 Binary files a/docs/img/linkedin_card.png and /dev/null differ diff --git a/docs/img/my-mtg-app.webp b/docs/img/my-mtg-app.webp new file mode 100644 index 00000000..06f3e4b7 Binary files /dev/null and b/docs/img/my-mtg-app.webp differ diff --git a/docs/img/navbar-logo.png b/docs/img/navbar-logo.png deleted file mode 100644 index 9631ea2c..00000000 Binary files a/docs/img/navbar-logo.png and /dev/null differ diff --git a/docs/img/portfolio/Slide0.png b/docs/img/portfolio/Slide0.png deleted file mode 100644 index 0a58e3c7..00000000 Binary files a/docs/img/portfolio/Slide0.png and /dev/null differ diff --git a/docs/img/portfolio/Slide0.webp b/docs/img/portfolio/Slide0.webp new file mode 100644 index 00000000..504cf468 Binary files /dev/null and b/docs/img/portfolio/Slide0.webp differ diff --git a/docs/img/portfolio/Slide1.png b/docs/img/portfolio/Slide1.png deleted file mode 100644 index d453d3e6..00000000 Binary files a/docs/img/portfolio/Slide1.png and /dev/null differ diff --git a/docs/img/portfolio/Slide1.webp b/docs/img/portfolio/Slide1.webp new file mode 100644 index 00000000..485e6592 Binary files /dev/null and b/docs/img/portfolio/Slide1.webp differ diff --git a/docs/img/portfolio/Slide10.png b/docs/img/portfolio/Slide10.png deleted file mode 100644 index b8ee0519..00000000 Binary files a/docs/img/portfolio/Slide10.png and /dev/null differ diff --git a/docs/img/portfolio/Slide10.webp b/docs/img/portfolio/Slide10.webp new file mode 100644 index 00000000..d46298af Binary files /dev/null and b/docs/img/portfolio/Slide10.webp differ diff --git a/docs/img/portfolio/Slide11.png b/docs/img/portfolio/Slide11.png deleted file mode 100644 index d881026b..00000000 Binary files a/docs/img/portfolio/Slide11.png and /dev/null differ diff --git a/docs/img/portfolio/Slide11.webp b/docs/img/portfolio/Slide11.webp new file mode 100644 index 00000000..91593b63 Binary files /dev/null and b/docs/img/portfolio/Slide11.webp differ diff --git a/docs/img/portfolio/Slide12.png b/docs/img/portfolio/Slide12.png deleted file mode 100644 index a5bc03ef..00000000 Binary files a/docs/img/portfolio/Slide12.png and /dev/null differ diff --git a/docs/img/portfolio/Slide12.webp b/docs/img/portfolio/Slide12.webp new file mode 100644 index 00000000..5b92a244 Binary files /dev/null and b/docs/img/portfolio/Slide12.webp differ diff --git a/docs/img/portfolio/Slide13.png b/docs/img/portfolio/Slide13.png deleted file mode 100644 index 58107018..00000000 Binary files a/docs/img/portfolio/Slide13.png and /dev/null differ diff --git a/docs/img/portfolio/Slide13.webp b/docs/img/portfolio/Slide13.webp new file mode 100644 index 00000000..558d909b Binary files /dev/null and b/docs/img/portfolio/Slide13.webp differ diff --git a/docs/img/portfolio/Slide14.png b/docs/img/portfolio/Slide14.png deleted file mode 100644 index e60b35d2..00000000 Binary files a/docs/img/portfolio/Slide14.png and /dev/null differ diff --git a/docs/img/portfolio/Slide14.webp b/docs/img/portfolio/Slide14.webp new file mode 100644 index 00000000..c64f674a Binary files /dev/null and b/docs/img/portfolio/Slide14.webp differ diff --git a/docs/img/portfolio/Slide2-5.png b/docs/img/portfolio/Slide2-5.png deleted file mode 100644 index a0f0fa9f..00000000 Binary files a/docs/img/portfolio/Slide2-5.png and /dev/null differ diff --git a/docs/img/portfolio/Slide2-5.webp b/docs/img/portfolio/Slide2-5.webp new file mode 100644 index 00000000..8b81228b Binary files /dev/null and b/docs/img/portfolio/Slide2-5.webp differ diff --git a/docs/img/portfolio/Slide2.png b/docs/img/portfolio/Slide2.png deleted file mode 100644 index f9fa1318..00000000 Binary files a/docs/img/portfolio/Slide2.png and /dev/null differ diff --git a/docs/img/portfolio/Slide2.webp b/docs/img/portfolio/Slide2.webp new file mode 100644 index 00000000..b57ddf13 Binary files /dev/null and b/docs/img/portfolio/Slide2.webp differ diff --git a/docs/img/portfolio/Slide3.png b/docs/img/portfolio/Slide3.png deleted file mode 100644 index f11b66d2..00000000 Binary files a/docs/img/portfolio/Slide3.png and /dev/null differ diff --git a/docs/img/portfolio/Slide3.webp b/docs/img/portfolio/Slide3.webp new file mode 100644 index 00000000..6f4dc04a Binary files /dev/null and b/docs/img/portfolio/Slide3.webp differ diff --git a/docs/img/portfolio/Slide4.png b/docs/img/portfolio/Slide4.png deleted file mode 100644 index eade9fc3..00000000 Binary files a/docs/img/portfolio/Slide4.png and /dev/null differ diff --git a/docs/img/portfolio/Slide4.webp b/docs/img/portfolio/Slide4.webp new file mode 100644 index 00000000..14375ad3 Binary files /dev/null and b/docs/img/portfolio/Slide4.webp differ diff --git a/docs/img/portfolio/Slide5.png b/docs/img/portfolio/Slide5.png deleted file mode 100644 index bbaecb5e..00000000 Binary files a/docs/img/portfolio/Slide5.png and /dev/null differ diff --git a/docs/img/portfolio/Slide5.webp b/docs/img/portfolio/Slide5.webp new file mode 100644 index 00000000..9bb125e5 Binary files /dev/null and b/docs/img/portfolio/Slide5.webp differ diff --git a/docs/img/portfolio/Slide6.png b/docs/img/portfolio/Slide6.png deleted file mode 100644 index 45edd17c..00000000 Binary files a/docs/img/portfolio/Slide6.png and /dev/null differ diff --git a/docs/img/portfolio/Slide6.webp b/docs/img/portfolio/Slide6.webp new file mode 100644 index 00000000..5fb725ae Binary files /dev/null and b/docs/img/portfolio/Slide6.webp differ diff --git a/docs/img/portfolio/Slide7.png b/docs/img/portfolio/Slide7.png deleted file mode 100644 index d5dd8765..00000000 Binary files a/docs/img/portfolio/Slide7.png and /dev/null differ diff --git a/docs/img/portfolio/Slide7.webp b/docs/img/portfolio/Slide7.webp new file mode 100644 index 00000000..77889cfd Binary files /dev/null and b/docs/img/portfolio/Slide7.webp differ diff --git a/docs/img/portfolio/Slide8.png b/docs/img/portfolio/Slide8.png deleted file mode 100644 index 1abc5c2d..00000000 Binary files a/docs/img/portfolio/Slide8.png and /dev/null differ diff --git a/docs/img/portfolio/Slide8.webp b/docs/img/portfolio/Slide8.webp new file mode 100644 index 00000000..62cde97d Binary files /dev/null and b/docs/img/portfolio/Slide8.webp differ diff --git a/docs/img/rh_integration.png b/docs/img/rh_integration.png deleted file mode 100644 index 9dd9d696..00000000 Binary files a/docs/img/rh_integration.png and /dev/null differ diff --git a/docs/img/rh_integration.webp b/docs/img/rh_integration.webp new file mode 100644 index 00000000..680a12ef Binary files /dev/null and b/docs/img/rh_integration.webp differ diff --git a/docs/img/screenshot-kubevirtio-mobile.png b/docs/img/screenshot-kubevirtio-mobile.png deleted file mode 100644 index 86ffb4b1..00000000 Binary files a/docs/img/screenshot-kubevirtio-mobile.png and /dev/null differ diff --git a/docs/img/screenshot-kubevirtio.png b/docs/img/screenshot-kubevirtio.png deleted file mode 100644 index 8e951336..00000000 Binary files a/docs/img/screenshot-kubevirtio.png and /dev/null differ diff --git a/docs/img/screenshot-kubevirtio2.png b/docs/img/screenshot-kubevirtio2.png deleted file mode 100644 index 019908a7..00000000 Binary files a/docs/img/screenshot-kubevirtio2.png and /dev/null differ diff --git a/docs/img/screenshot-patternflyorg.png b/docs/img/screenshot-patternflyorg.png deleted file mode 100644 index e7902c18..00000000 Binary files a/docs/img/screenshot-patternflyorg.png and /dev/null differ diff --git a/docs/img/screenshot-try_openshift.png b/docs/img/screenshot-try_openshift.png deleted file mode 100644 index 5e5845fd..00000000 Binary files a/docs/img/screenshot-try_openshift.png and /dev/null differ diff --git a/docs/img/screenshots/screenshot_about.jpeg b/docs/img/screenshots/screenshot_about.jpeg deleted file mode 100644 index 4a325d93..00000000 Binary files a/docs/img/screenshots/screenshot_about.jpeg and /dev/null differ diff --git a/docs/img/screenshots/screenshot_designs.jpeg b/docs/img/screenshots/screenshot_designs.jpeg deleted file mode 100644 index 1945d33d..00000000 Binary files a/docs/img/screenshots/screenshot_designs.jpeg and /dev/null differ diff --git a/docs/img/screenshots/screenshot_development.jpeg b/docs/img/screenshots/screenshot_development.jpeg deleted file mode 100644 index 2b1a48a9..00000000 Binary files a/docs/img/screenshots/screenshot_development.jpeg and /dev/null differ diff --git a/docs/img/screenshots/screenshot_homepage-wide.jpeg b/docs/img/screenshots/screenshot_homepage-wide.jpeg deleted file mode 100644 index 32e424ba..00000000 Binary files a/docs/img/screenshots/screenshot_homepage-wide.jpeg and /dev/null differ diff --git a/docs/img/screenshots/screenshot_homepage.jpeg b/docs/img/screenshots/screenshot_homepage.jpeg deleted file mode 100644 index bc2f9bca..00000000 Binary files a/docs/img/screenshots/screenshot_homepage.jpeg and /dev/null differ diff --git a/docs/img/site.webmanifest b/docs/img/site.webmanifest deleted file mode 100755 index 5dde7d1f..00000000 --- a/docs/img/site.webmanifest +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "", - "short_name": "", - "theme_color": "#ffffff", - "background_color": "#ffffff", - "display": "standalone" -} diff --git a/docs/img/task-it_flow-errors-forms.png b/docs/img/task-it_flow-errors-forms.png deleted file mode 100644 index d250495a..00000000 Binary files a/docs/img/task-it_flow-errors-forms.png and /dev/null differ diff --git a/docs/img/task-it_flow-errors-general.png b/docs/img/task-it_flow-errors-general.png deleted file mode 100644 index 6da2dff3..00000000 Binary files a/docs/img/task-it_flow-errors-general.png and /dev/null differ diff --git a/docs/img/task-it_flow-success.png b/docs/img/task-it_flow-success.png deleted file mode 100644 index ab72b2aa..00000000 Binary files a/docs/img/task-it_flow-success.png and /dev/null differ diff --git a/docs/img/task-it_intro.png b/docs/img/task-it_intro.png deleted file mode 100644 index f6b5f05d..00000000 Binary files a/docs/img/task-it_intro.png and /dev/null differ diff --git a/docs/img/task-it_product.png b/docs/img/task-it_product.png deleted file mode 100644 index 583b42c7..00000000 Binary files a/docs/img/task-it_product.png and /dev/null differ diff --git a/docs/img/task-it_product.webp b/docs/img/task-it_product.webp new file mode 100644 index 00000000..b0412da9 Binary files /dev/null and b/docs/img/task-it_product.webp differ diff --git a/docs/img/task-it_task-details_mockup1.png b/docs/img/task-it_task-details_mockup1.png deleted file mode 100644 index 5e668fce..00000000 Binary files a/docs/img/task-it_task-details_mockup1.png and /dev/null differ diff --git a/docs/img/task-it_task-details_mockup1.webp b/docs/img/task-it_task-details_mockup1.webp new file mode 100644 index 00000000..321d6565 Binary files /dev/null and b/docs/img/task-it_task-details_mockup1.webp differ diff --git a/docs/img/task-it_task-details_mockup2.png b/docs/img/task-it_task-details_mockup2.png deleted file mode 100644 index 7f3e5031..00000000 Binary files a/docs/img/task-it_task-details_mockup2.png and /dev/null differ diff --git a/docs/img/task-it_task-details_mockup2.webp b/docs/img/task-it_task-details_mockup2.webp new file mode 100644 index 00000000..016889c7 Binary files /dev/null and b/docs/img/task-it_task-details_mockup2.webp differ diff --git a/docs/img/task-it_task-details_mockup3.png b/docs/img/task-it_task-details_mockup3.png deleted file mode 100644 index 64bdaf9e..00000000 Binary files a/docs/img/task-it_task-details_mockup3.png and /dev/null differ diff --git a/docs/img/task-it_task-details_mockup3.webp b/docs/img/task-it_task-details_mockup3.webp new file mode 100644 index 00000000..c00d45cc Binary files /dev/null and b/docs/img/task-it_task-details_mockup3.webp differ diff --git a/docs/img/task-it_task-details_mockup4.png b/docs/img/task-it_task-details_mockup4.png deleted file mode 100644 index 3b222869..00000000 Binary files a/docs/img/task-it_task-details_mockup4.png and /dev/null differ diff --git a/docs/img/task-it_task-details_mockup4.webp b/docs/img/task-it_task-details_mockup4.webp new file mode 100644 index 00000000..2449aaf5 Binary files /dev/null and b/docs/img/task-it_task-details_mockup4.webp differ diff --git a/docs/img/task-it_task-details_wireframe.png b/docs/img/task-it_task-details_wireframe.png deleted file mode 100644 index f4bb63eb..00000000 Binary files a/docs/img/task-it_task-details_wireframe.png and /dev/null differ diff --git a/docs/img/task-it_task-details_wireframe.webp b/docs/img/task-it_task-details_wireframe.webp new file mode 100644 index 00000000..685eb17e Binary files /dev/null and b/docs/img/task-it_task-details_wireframe.webp differ diff --git a/docs/img/task-it_thumbnail.webp b/docs/img/task-it_thumbnail.webp new file mode 100644 index 00000000..95ebdc88 Binary files /dev/null and b/docs/img/task-it_thumbnail.webp differ diff --git a/docs/img/task-it_user-flow.png b/docs/img/task-it_user-flow.png deleted file mode 100644 index e434e76d..00000000 Binary files a/docs/img/task-it_user-flow.png and /dev/null differ diff --git a/docs/img/task-it_user-flow.webp b/docs/img/task-it_user-flow.webp new file mode 100644 index 00000000..9a56c2cd Binary files /dev/null and b/docs/img/task-it_user-flow.webp differ diff --git a/docs/img/task-it_user-states.png b/docs/img/task-it_user-states.png deleted file mode 100644 index 82cdd0eb..00000000 Binary files a/docs/img/task-it_user-states.png and /dev/null differ diff --git a/docs/img/task-it_user-states.webp b/docs/img/task-it_user-states.webp new file mode 100644 index 00000000..019324e6 Binary files /dev/null and b/docs/img/task-it_user-states.webp differ diff --git a/docs/img/task-it_user-survey.png b/docs/img/task-it_user-survey.png deleted file mode 100644 index 8e30911e..00000000 Binary files a/docs/img/task-it_user-survey.png and /dev/null differ diff --git a/docs/img/task-it_user-survey.webp b/docs/img/task-it_user-survey.webp new file mode 100644 index 00000000..d1c67533 Binary files /dev/null and b/docs/img/task-it_user-survey.webp differ diff --git a/docs/img/theproxyguy-membership-card-patreon.png b/docs/img/theproxyguy-membership-card-patreon.png deleted file mode 100644 index 2c67cd4b..00000000 Binary files a/docs/img/theproxyguy-membership-card-patreon.png and /dev/null differ diff --git a/docs/img/thumbnail_Alfredlogo.png b/docs/img/thumbnail_Alfredlogo.png deleted file mode 100644 index 5aab387a..00000000 Binary files a/docs/img/thumbnail_Alfredlogo.png and /dev/null differ diff --git a/docs/img/thumbnail_PatternFly.png b/docs/img/thumbnail_PatternFly.png deleted file mode 100644 index 9603a4a8..00000000 Binary files a/docs/img/thumbnail_PatternFly.png and /dev/null differ diff --git a/docs/img/thumbnail_PatternFly.webp b/docs/img/thumbnail_PatternFly.webp new file mode 100644 index 00000000..2c154478 Binary files /dev/null and b/docs/img/thumbnail_PatternFly.webp differ diff --git a/docs/img/thumbnail_RHDM.png b/docs/img/thumbnail_RHDM.png deleted file mode 100644 index da437b07..00000000 Binary files a/docs/img/thumbnail_RHDM.png and /dev/null differ diff --git a/docs/img/thumbnail_RHDM.webp b/docs/img/thumbnail_RHDM.webp new file mode 100644 index 00000000..e8bd8e0e Binary files /dev/null and b/docs/img/thumbnail_RHDM.webp differ diff --git a/docs/img/thumbnail_kubevirtio.png b/docs/img/thumbnail_kubevirtio.png deleted file mode 100644 index fc2ea6a3..00000000 Binary files a/docs/img/thumbnail_kubevirtio.png and /dev/null differ diff --git a/docs/img/thumbnail_kubevirtio.webp b/docs/img/thumbnail_kubevirtio.webp new file mode 100644 index 00000000..ea8e36fb Binary files /dev/null and b/docs/img/thumbnail_kubevirtio.webp differ diff --git a/docs/img/thumbnail_streamdeck.png b/docs/img/thumbnail_streamdeck.png deleted file mode 100644 index 036fcfce..00000000 Binary files a/docs/img/thumbnail_streamdeck.png and /dev/null differ diff --git a/docs/index.html b/docs/index.html index 90fb7307..2517765b 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,632 +1,15 @@ - - - - - - - - Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-
-

Hi! I’m Adam, a Product Designer creating data-driven enterprise experiences.

-

My solutions help users traverse technical information with minimal friction.

-
- - Resume - -
-
- - - - - - - -
-
-
-
-

Recent Projects

-
-
-
-
-
-

Task-It!

-

Innovative work management system with clear presentation and project customization, growing from a dozen users to 500 daily in 18 months.

- - - Experience the Journey - -
- Task-It! thumbnail -
-
-
-
-
-

Application Lifecycle Management

-

Creating a single source for team planning, cutting delivery time through simplified project management.

- - - Experience the Journey - -
- Application Lifecycle Management thumbnail -
-
-
-
-
-

Customer Engagement

-

Informing users how best to reach their customers, improving engagement rates by 10%.

- - - Experience the Journey - -
- Customer Engagement App Dashboard thumbnail -
-
-
-
-
-

Presentations

-

Standardizing how information is shared, improving communication and driving efficiency.

- - - Follow along - -
- A thumbnail of the first slide in the presentation -
-
-
-
-
- - - - - + } \ No newline at end of file diff --git a/docs/journeys/journeys/index.html b/docs/journeys/journeys/index.html index c94ba2fd..167e73a5 100644 --- a/docs/journeys/journeys/index.html +++ b/docs/journeys/journeys/index.html @@ -1,329 +1,15 @@ - - - - - - - - Journeys | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Journeys

-

- -

- - - - - - - - - + } \ No newline at end of file diff --git a/docs/js/beer.min.js b/docs/js/beer.min.js new file mode 100644 index 00000000..7e5c1b84 --- /dev/null +++ b/docs/js/beer.min.js @@ -0,0 +1 @@ +const V=[];function S(){return window==null?void 0:window.matchMedia("(pointer: coarse)").matches}function lt(){return window==null?void 0:window.matchMedia("(prefers-color-scheme: dark)").matches}async function W(t){await new Promise(n=>setTimeout(n,t))}function ft(){return"fxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{const n=Math.random()*16|0;return(t==="x"?n:n&3|8).toString(16)})}function h(t,n){try{return typeof t=="string"?(n??document).querySelector(t):t}catch{return null}}function u(t,n){try{return typeof t=="string"?(n??document).querySelectorAll(t):t??V}catch{return V}}function a(t,n){return(t==null?void 0:t.classList.contains(n))??!1}function y(t,n){var e;return((e=t==null?void 0:t.tagName)==null?void 0:e.toLowerCase())===n}function T(t,n){var e;return((e=t==null?void 0:t.type)==null?void 0:e.toLowerCase())===n}function g(t,n){if(t instanceof NodeList)for(let e=0;e label");for(let n=0;n input:not([type=file], [type=color], [type=range])");for(let n=0;n select");for(let n=0;n input[type=file]");for(let n=0;n input[type=color]");for(let n=0;n textarea");for(let n=0;ni.name).join(", "):"",e.readOnly=!0,o(e,"keydown",kt,!1),L(e))}function q(t,n){if((n==null?void 0:n.key)==="Enter"){const i=O(t);if(!T(i,"color"))return;i.click();return}const e=F(t);T(e,"text")&&(e.readOnly=!0,e.value=t.value,o(e,"keydown",mt,!1),L(e))}function Y(t){X(t);const n=v(t);n.removeAttribute("style"),a(n,"min")&&n.style.setProperty("--_size",`${Math.min(192,Math.max(t.scrollHeight,n.offsetHeight))}px`)}function Mt(){Tt(),Lt(),At(),Et(),St(),Dt(),It()}function H(t){const n=t.target;!y(n,"input")&&!y(n,"select")||(n.type==="range"?(n.focus(),Q(n)):G())}function Pt(t){if(!S())return;const n=t.target,e=v(n);a(e,"vertical")&&document.body.classList.add("no-scroll")}function _t(t){if(!S())return;const n=t.target,e=v(n);a(e,"vertical")&&document.body.classList.remove("no-scroll")}function G(){const t=document.body,n=u(".slider > input[type=range]");n.length?o(t,"input",H,!1):_(t,"input",H,!1);for(let e=0;e1&&(f=Math.abs(r[1]-r[0]),b=r[1]>r[0]?r[0]:r[1],A=100-b-f,w>k&&(k=l[1]||0,w=l[0])),n.style.setProperty("--_start",`${b}%`),n.style.setProperty("--_end",`${A}%`),n.style.setProperty("--_value1",`'${k}'`),n.style.setProperty("--_value2",`'${w}'`)}function Ft(){G()}const d={light:"",dark:""};function P(){var t;return(t=document==null?void 0:document.body)!=null&&t.classList.contains("dark")?"dark":"light"}function $t(){if(d.light&&d.dark)return d;const t=document.body,n=document.createElement("body");n.className="light",t.appendChild(n);const e=document.createElement("body");e.className="dark",t.appendChild(e);const i=getComputedStyle(n),s=getComputedStyle(e),c=["--primary","--on-primary","--primary-container","--on-primary-container","--secondary","--on-secondary","--secondary-container","--on-secondary-container","--tertiary","--on-tertiary","--tertiary-container","--on-tertiary-container","--error","--on-error","--error-container","--on-error-container","--background","--on-background","--surface","--on-surface","--surface-variant","--on-surface-variant","--outline","--outline-variant","--shadow","--scrim","--inverse-surface","--inverse-on-surface","--inverse-primary","--surface-dim","--surface-bright","--surface-container-lowest","--surface-container-low","--surface-container","--surface-container-high","--surface-container-highest"];for(let r=0,l=c.length;r{const c=r=>{let l="";for(let f=0,b=Object.keys(r),A=b.length;f{const n=h(".field > input",t);n?n.focus():t.focus()},90)}function ot(t,n,e){D&&clearTimeout(D),D=setTimeout(()=>{o(document.body,"click",it),y(document.activeElement,"input")||$();const i=a(n,"active"),s=(e==null?void 0:e.target)===t,c=!!t.closest("menu");if(!i&&c||i&&s){p(n,"active");return}p(u("menu.active"),"active"),g(n,"active"),Bt(n)},90)}let C;function jt(t){const n=t.currentTarget;p(n,"active"),C&&clearTimeout(C)}function Kt(t,n){$();const e=u(".snackbar.active");for(let i=0;i{p(t,"active")},n??6e3))}function Ut(t){const n=v(t);n&&p(u(":scope > .page",n),"active"),g(t,"active")}function Vt(t){Ht(t)}function Ht(t){const n=t.currentTarget,e=n.getBoundingClientRect(),i=Math.max(e.width,e.height),s=i/2,c=t.clientX-e.left-s,r=t.clientY-e.top-s,l=document.createElement("div");l.className="ripple-js";const f=document.createElement("div");f.style.inlineSize=f.style.blockSize=`${i}px`,f.style.left=`${c}px`,f.style.top=`${r}px`,f.addEventListener("animationend",()=>{l.remove()}),l.appendChild(f),n.appendChild(l)}function Zt(){const t=u(".slow-ripple, .ripple, .fast-ripple");for(let n=0;nawait ct(),180)}async function B(t,n,e,i){if(!n&&(n=h(t.getAttribute("data-ui")),!n)){t.classList.toggle("active");return}if(ht(t),y(n,"dialog")){await et(t,n);return}if(y(n,"menu")){ot(t,n,i);return}if(a(n,"snackbar")){Kt(n,e);return}if(a(n,"page")){Ut(n);return}if(a(n,"active")){p(t,"active"),p(n,"active");return}g(n,"active")}function Wt(t){B(t.currentTarget,null,null,t)}function Xt(t){t.key==="Enter"&&B(t.currentTarget,null,null,t)}function rt(){m.ui||M||!m.MutationObserver||(M=new MutationObserver(Z),M.observe(document.body,{childList:!0,subtree:!0}),Z())}function Yt(){const t=u("[data-ui]");for(let n=0,e=t.length;nlight_mode' : 'dark_mode'; + // use an aria-label if you are omitting text on the button + // and using a sun/moon icon, for example + buttonEl.setAttribute("aria-label", newCta); + buttonEl.innerHTML = newCta; +} + +/** +* Utility function to update the theme setting on the html tag +*/ +function updateThemeOnHtmlEl({ theme }) { + document.querySelector("body").setAttribute("class", theme); +} + + +/** +* On page load: +*/ + +/** +* 1. Grab what we need from the DOM and system settings on page load +*/ +const button = document.querySelector("[color-theme-toggle]"); +const localStorageTheme = localStorage.getItem("theme"); +const systemSettingDark = window.matchMedia("(prefers-color-scheme: dark)"); + +/** +* 2. Work out the current site settings +*/ +let currentThemeSetting = calculateSettingAsThemeString({ localStorageTheme, systemSettingDark }); + +/** +* 3. Update the theme setting and button text accoridng to current settings +*/ +updateButton({ buttonEl: button, isDark: currentThemeSetting === "dark" }); +updateThemeOnHtmlEl({ theme: currentThemeSetting }); + +/** +* 4. Add an event listener to toggle the theme +*/ +button.addEventListener("click", (event) => { + const newTheme = currentThemeSetting === "dark" ? "light" : "dark"; + + localStorage.setItem("theme", newTheme); + updateButton({ buttonEl: button, isDark: newTheme === "dark" }); + updateThemeOnHtmlEl({ theme: newTheme }); + + currentThemeSetting = newTheme; +}); diff --git a/docs/js/prism.js b/docs/js/prism.js deleted file mode 100644 index 69161924..00000000 --- a/docs/js/prism.js +++ /dev/null @@ -1,11 +0,0 @@ -/* PrismJS 1.29.0 -https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+markdown+scss&plugins=show-language+toolbar */ -var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(e){var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,r={},a={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof i?new i(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/=g.reach);A+=w.value.length,w=w.next){var E=w.value;if(n.length>e.length)return;if(!(E instanceof i)){var P,L=1;if(y){if(!(P=l(b,A,e,m))||P.index>=e.length)break;var S=P.index,O=P.index+P[0].length,j=A;for(j+=w.value.length;S>=j;)j+=(w=w.next).value.length;if(A=j-=w.value.length,w.value instanceof i)continue;for(var C=w;C!==n.tail&&(jg.reach&&(g.reach=W);var z=w.prev;if(_&&(z=u(n,z,_),A+=_.length),c(n,z,L),w=u(n,z,new i(f,p?a.tokenize(N,p):N,k,N)),M&&u(n,w,M),L>1){var I={cause:f+","+d,reach:W};o(e,n,t,w.prev,A,I),g&&I.reach>g.reach&&(g.reach=I.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function u(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function c(e,n,t){for(var r=n.next,a=0;a"+i.content+""},!e.document)return e.addEventListener?(a.disableWorkerMessageHandler||e.addEventListener("message",(function(n){var t=JSON.parse(n.data),r=t.language,i=t.code,l=t.immediateClose;e.postMessage(a.highlight(i,a.languages[r],r)),l&&e.close()}),!1),a):a;var g=a.util.currentScript();function f(){a.manual||a.highlightAll()}if(g&&(a.filename=g.src,g.hasAttribute("data-manual")&&(a.manual=!0)),!a.manual){var h=document.readyState;"loading"===h||"interactive"===h&&g&&g.defer?document.addEventListener("DOMContentLoaded",f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16)}return a}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); -Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",(function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))})),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={"included-cdata":{pattern://i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,(function(){return a})),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml; -!function(s){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:[^;{\\s\"']|\\s+(?!\\s)|"+e.source+")*?(?:;|(?=\\s*\\{))"),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism); -Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}; -Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp("(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])"),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp("((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/(?:(?:\\[(?:[^\\]\\\\\r\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}|(?:\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\s|/\\*(?:[^*]|\\*(?!/))*\\*/)*(?:$|[\r\n,.;:})\\]]|//))"),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),Prism.languages.js=Prism.languages.javascript; -!function(n){function e(n){return n=n.replace(//g,(function(){return"(?:\\\\.|[^\\\\\n\r]|(?:\n|\r\n?)(?![\r\n]))"})),RegExp("((?:^|[^\\\\])(?:\\\\{2})*)(?:"+n+")")}var t="(?:\\\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\\\|\r\n`])+",a="\\|?__(?:\\|__)+\\|?(?:(?:\n|\r\n?)|(?![^]))".replace(/__/g,(function(){return t})),i="\\|?[ \t]*:?-{3,}:?[ \t]*(?:\\|[ \t]*:?-{3,}:?[ \t]*)+\\|?(?:\n|\r\n?)";n.languages.markdown=n.languages.extend("markup",{}),n.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:n.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+i+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+i+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(t),inside:n.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+i+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(t),alias:"important",inside:n.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:e("\\b__(?:(?!_)|_(?:(?!_))+_)+__\\b|\\*\\*(?:(?!\\*)|\\*(?:(?!\\*))+\\*)+\\*\\*"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:e("\\b_(?:(?!_)|__(?:(?!_))+__)+_\\b|\\*(?:(?!\\*)|\\*\\*(?:(?!\\*))+\\*\\*)+\\*"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:e("(~~?)(?:(?!~))+\\2"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:e('!?\\[(?:(?!\\]))+\\](?:\\([^\\s)]+(?:[\t ]+"(?:\\\\.|[^"\\\\])*")?\\)|[ \t]?\\[(?:(?!\\]))+\\])'),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(e){["url","bold","italic","strike","code-snippet"].forEach((function(t){e!==t&&(n.languages.markdown[e].inside.content.inside[t]=n.languages.markdown[t])}))})),n.hooks.add("after-tokenize",(function(n){"markdown"!==n.language&&"md"!==n.language||function n(e){if(e&&"string"!=typeof e)for(var t=0,a=e.length;t",quot:'"'},l=String.fromCodePoint||String.fromCharCode;n.languages.md=n.languages.markdown}(Prism); -Prism.languages.scss=Prism.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),Prism.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),Prism.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),Prism.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),Prism.languages.scss.atrule.inside.rest=Prism.languages.scss; -!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var e=[],t={},n=function(){};Prism.plugins.toolbar={};var a=Prism.plugins.toolbar.registerButton=function(n,a){var r;r="function"==typeof a?a:function(e){var t;return"function"==typeof a.onClick?((t=document.createElement("button")).type="button",t.addEventListener("click",(function(){a.onClick.call(this,e)}))):"string"==typeof a.url?(t=document.createElement("a")).href=a.url:t=document.createElement("span"),a.className&&t.classList.add(a.className),t.textContent=a.text,t},n in t?console.warn('There is a button with the key "'+n+'" registered already.'):e.push(t[n]=r)},r=Prism.plugins.toolbar.hook=function(a){var r=a.element.parentNode;if(r&&/pre/i.test(r.nodeName)&&!r.parentNode.classList.contains("code-toolbar")){var o=document.createElement("div");o.classList.add("code-toolbar"),r.parentNode.insertBefore(o,r),o.appendChild(r);var i=document.createElement("div");i.classList.add("toolbar");var l=e,d=function(e){for(;e;){var t=e.getAttribute("data-toolbar-order");if(null!=t)return(t=t.trim()).length?t.split(/\s*,\s*/g):[];e=e.parentElement}}(a.element);d&&(l=d.map((function(e){return t[e]||n}))),l.forEach((function(e){var t=e(a);if(t){var n=document.createElement("div");n.classList.add("toolbar-item"),n.appendChild(t),i.appendChild(n)}})),o.appendChild(i)}};a("label",(function(e){var t=e.element.parentNode;if(t&&/pre/i.test(t.nodeName)&&t.hasAttribute("data-label")){var n,a,r=t.getAttribute("data-label");try{a=document.querySelector("template#"+r)}catch(e){}return a?n=a.content:(t.hasAttribute("data-url")?(n=document.createElement("a")).href=t.getAttribute("data-url"):n=document.createElement("span"),n.textContent=r),n}})),Prism.hooks.add("complete",r)}}(); -!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document)if(Prism.plugins.toolbar){var e={none:"Plain text",plain:"Plain text",plaintext:"Plain text",text:"Plain text",txt:"Plain text",html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",rss:"RSS",css:"CSS",clike:"C-like",js:"JavaScript",abap:"ABAP",abnf:"ABNF",al:"AL",antlr4:"ANTLR4",g4:"ANTLR4",apacheconf:"Apache Configuration",apl:"APL",aql:"AQL",ino:"Arduino",arff:"ARFF",armasm:"ARM Assembly","arm-asm":"ARM Assembly",art:"Arturo",asciidoc:"AsciiDoc",adoc:"AsciiDoc",aspnet:"ASP.NET (C#)",asm6502:"6502 Assembly",asmatmel:"Atmel AVR Assembly",autohotkey:"AutoHotkey",autoit:"AutoIt",avisynth:"AviSynth",avs:"AviSynth","avro-idl":"Avro IDL",avdl:"Avro IDL",awk:"AWK",gawk:"GAWK",sh:"Shell",basic:"BASIC",bbcode:"BBcode",bbj:"BBj",bnf:"BNF",rbnf:"RBNF",bqn:"BQN",bsl:"BSL (1C:Enterprise)",oscript:"OneScript",csharp:"C#",cs:"C#",dotnet:"C#",cpp:"C++",cfscript:"CFScript",cfc:"CFScript",cil:"CIL",cilkc:"Cilk/C","cilk-c":"Cilk/C",cilkcpp:"Cilk/C++","cilk-cpp":"Cilk/C++",cilk:"Cilk/C++",cmake:"CMake",cobol:"COBOL",coffee:"CoffeeScript",conc:"Concurnas",csp:"Content-Security-Policy","css-extras":"CSS Extras",csv:"CSV",cue:"CUE",dataweave:"DataWeave",dax:"DAX",django:"Django/Jinja2",jinja2:"Django/Jinja2","dns-zone-file":"DNS zone file","dns-zone":"DNS zone file",dockerfile:"Docker",dot:"DOT (Graphviz)",gv:"DOT (Graphviz)",ebnf:"EBNF",editorconfig:"EditorConfig",ejs:"EJS",etlua:"Embedded Lua templating",erb:"ERB","excel-formula":"Excel Formula",xlsx:"Excel Formula",xls:"Excel Formula",fsharp:"F#","firestore-security-rules":"Firestore security rules",ftl:"FreeMarker Template Language",gml:"GameMaker Language",gamemakerlanguage:"GameMaker Language",gap:"GAP (CAS)",gcode:"G-code",gdscript:"GDScript",gedcom:"GEDCOM",gettext:"gettext",po:"gettext",glsl:"GLSL",gn:"GN",gni:"GN","linker-script":"GNU Linker Script",ld:"GNU Linker Script","go-module":"Go module","go-mod":"Go module",graphql:"GraphQL",hbs:"Handlebars",hs:"Haskell",hcl:"HCL",hlsl:"HLSL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam","icu-message-format":"ICU Message Format",idr:"Idris",ignore:".ignore",gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore",inform7:"Inform 7",javadoc:"JavaDoc",javadoclike:"JavaDoc-like",javastacktrace:"Java stack trace",jq:"JQ",jsdoc:"JSDoc","js-extras":"JS Extras",json:"JSON",webmanifest:"Web App Manifest",json5:"JSON5",jsonp:"JSONP",jsstacktrace:"JS stack trace","js-templates":"JS Templates",keepalived:"Keepalived Configure",kts:"Kotlin Script",kt:"Kotlin",kumir:"KuMir (КуМир)",kum:"KuMir (КуМир)",latex:"LaTeX",tex:"TeX",context:"ConTeXt",lilypond:"LilyPond",ly:"LilyPond",emacs:"Lisp",elisp:"Lisp","emacs-lisp":"Lisp",llvm:"LLVM IR",log:"Log file",lolcode:"LOLCODE",magma:"Magma (CAS)",md:"Markdown","markup-templating":"Markup templating",matlab:"MATLAB",maxscript:"MAXScript",mel:"MEL",metafont:"METAFONT",mongodb:"MongoDB",moon:"MoonScript",n1ql:"N1QL",n4js:"N4JS",n4jsd:"N4JS","nand2tetris-hdl":"Nand To Tetris HDL",naniscript:"Naninovel Script",nani:"Naninovel Script",nasm:"NASM",neon:"NEON",nginx:"nginx",nsis:"NSIS",objectivec:"Objective-C",objc:"Objective-C",ocaml:"OCaml",opencl:"OpenCL",openqasm:"OpenQasm",qasm:"OpenQasm",parigp:"PARI/GP",objectpascal:"Object Pascal",psl:"PATROL Scripting Language",pcaxis:"PC-Axis",px:"PC-Axis",peoplecode:"PeopleCode",pcode:"PeopleCode",php:"PHP",phpdoc:"PHPDoc","php-extras":"PHP Extras","plant-uml":"PlantUML",plantuml:"PlantUML",plsql:"PL/SQL",powerquery:"PowerQuery",pq:"PowerQuery",mscript:"PowerQuery",powershell:"PowerShell",promql:"PromQL",properties:".properties",protobuf:"Protocol Buffers",purebasic:"PureBasic",pbfasm:"PureBasic",purs:"PureScript",py:"Python",qsharp:"Q#",qs:"Q#",q:"Q (kdb+ database)",qml:"QML",rkt:"Racket",cshtml:"Razor C#",razor:"Razor C#",jsx:"React JSX",tsx:"React TSX",renpy:"Ren'py",rpy:"Ren'py",res:"ReScript",rest:"reST (reStructuredText)",robotframework:"Robot Framework",robot:"Robot Framework",rb:"Ruby",sas:"SAS",sass:"Sass (Sass)",scss:"Sass (SCSS)","shell-session":"Shell session","sh-session":"Shell session",shellsession:"Shell session",sml:"SML",smlnj:"SML/NJ",solidity:"Solidity (Ethereum)",sol:"Solidity (Ethereum)","solution-file":"Solution file",sln:"Solution file",soy:"Soy (Closure Template)",sparql:"SPARQL",rq:"SPARQL","splunk-spl":"Splunk SPL",sqf:"SQF: Status Quo Function (Arma 3)",sql:"SQL",stata:"Stata Ado",iecst:"Structured Text (IEC 61131-3)",supercollider:"SuperCollider",sclang:"SuperCollider",systemd:"Systemd configuration file","t4-templating":"T4 templating","t4-cs":"T4 Text Templates (C#)",t4:"T4 Text Templates (C#)","t4-vb":"T4 Text Templates (VB)",tap:"TAP",tt2:"Template Toolkit 2",toml:"TOML",trickle:"trickle",troy:"troy",trig:"TriG",ts:"TypeScript",tsconfig:"TSConfig",uscript:"UnrealScript",uc:"UnrealScript",uorazor:"UO Razor Script",uri:"URI",url:"URL",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",vba:"VBA",vb:"Visual Basic",wasm:"WebAssembly","web-idl":"Web IDL",webidl:"Web IDL",wgsl:"WGSL",wiki:"Wiki markup",wolfram:"Wolfram language",nb:"Mathematica Notebook",wl:"Wolfram language",xeoracube:"XeoraCube","xml-doc":"XML doc (.net)",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML",yml:"YAML",yang:"YANG"};Prism.plugins.toolbar.registerButton("show-language",(function(a){var t=a.element.parentNode;if(t&&/pre/i.test(t.nodeName)){var o,i=t.getAttribute("data-language")||e[a.language]||((o=a.language)?(o.substring(0,1).toUpperCase()+o.substring(1)).replace(/s(?=cript)/,"S"):o);if(i){var s=document.createElement("span");return s.textContent=i,s}}}))}else console.warn("Show Languages plugin loaded before Toolbar plugin.")}(); diff --git a/docs/js/speedlify-score.js b/docs/js/speedlify-score.js new file mode 100644 index 00000000..4ea30d3e --- /dev/null +++ b/docs/js/speedlify-score.js @@ -0,0 +1,260 @@ +class SpeedlifyUrlStore { + constructor() { + this.fetches = {}; + this.responses = {}; + this.urls = {}; + } + + static normalizeUrl(speedlifyUrl, path) { + let host = `${speedlifyUrl}${speedlifyUrl.endsWith("/") ? "" : "/"}` + return host + (path.startsWith("/") ? path.substr(1) : path); + } + + async fetchFromApi(apiUrl) { + if(!this.fetches[apiUrl]) { + this.fetches[apiUrl] = fetch(apiUrl); + } + + let response = await this.fetches[apiUrl]; + if(!this.responses[apiUrl]) { + this.responses[apiUrl] = response.json(); + } + let json = await this.responses[apiUrl]; + return json; + } + + async fetchHash(speedlifyUrl, url) { + if(this.urls[speedlifyUrl]) { + return this.urls[speedlifyUrl][url] ? this.urls[speedlifyUrl][url].hash : false; + } + + let apiUrl = SpeedlifyUrlStore.normalizeUrl(speedlifyUrl, "api/urls.json"); + let json = await this.fetchFromApi(apiUrl); + + return json[url] ? json[url].hash : false; + } + + async fetchData(speedlifyUrl, hash) { + let apiUrl = SpeedlifyUrlStore.normalizeUrl(speedlifyUrl, `api/${hash}.json`); + return this.fetchFromApi(apiUrl); + } +} + +// Global store +const urlStore = new SpeedlifyUrlStore(); + +class SpeedlifyScore extends HTMLElement { + static register(tagName) { + customElements.define(tagName || "speedlify-score", SpeedlifyScore); + } + + static attrs = { + url: "url", + speedlifyUrl: "speedlify-url", + hash: "hash", + rawData: "raw-data", + requests: "requests", + weight: "weight", + rank: "rank", + rankChange: "rank-change", + score: "score", + } + + static css = ` +:host { + --_circle: var(--speedlify-circle); + display: flex; + align-items: center; + gap: 0.375em; /* 6px /16 */ +} +.circle { + font-size: 0.8125em; /* 13px /16 */ + min-width: 2.6em; + height: 2.6em; + line-height: 1; + display: inline-flex; + align-items: center; + justify-content: center; + border-radius: 50%; + border: 0.15384615em solid currentColor; /* 2px /13 */ + color: var(--_circle, #666); +} +.circle-good { + color: var(--_circle, #088645); + border-color: var(--_circle, #0cce6b); +} +.circle-ok { + color: var(--_circle, #ffa400); + border-color: var(--_circle, currentColor); +} +.circle-bad { + color: var(--_circle, #ff4e42); + border-color: var(--_circle, currentColor); +} +.meta { + display: flex; + align-items: center; + gap: 0.625em; /* 10px /16 */ +} +.circle + .meta { + margin-left: 0.25em; /* 4px /16 */ +} +.rank:before { + content: "Rank #"; +} +.rank-change:before { + line-height: 1; +} +.rank-change.up { + color: green; +} +.rank-change.up:before { + content: "⬆"; +} +.rank-change.down { + color: red; +} +.rank-change.down:before { + content: "⬇"; +} +`; + + connectedCallback() { + if (!("replaceSync" in CSSStyleSheet.prototype) || this.shadowRoot) { + return; + } + + this.speedlifyUrl = this.getAttribute(SpeedlifyScore.attrs.speedlifyUrl); + this.shorthash = this.getAttribute(SpeedlifyScore.attrs.hash); + this.rawData = this.getAttribute(SpeedlifyScore.attrs.rawData); + this.url = this.getAttribute(SpeedlifyScore.attrs.url) || window.location.href; + + if(!this.rawData && !this.speedlifyUrl) { + console.error(`Missing \`${SpeedlifyScore.attrs.speedlifyUrl}\` attribute:`, this); + return; + } + + // async + this.init(); + } + + _initTemplate(data, forceRerender = false) { + if(this.shadowRoot && !forceRerender) { + return; + } + if(this.shadowRoot) { + this.shadowRoot.innerHTML = this.render(data); + return; + } + + let shadowroot = this.attachShadow({ mode: "open" }); + let sheet = new CSSStyleSheet(); + sheet.replaceSync(SpeedlifyScore.css); + shadowroot.adoptedStyleSheets = [sheet]; + + let template = document.createElement("template"); + template.innerHTML = this.render(data); + shadowroot.appendChild(template.content.cloneNode(true)); + } + + async init() { + if(this.rawData) { + let data = JSON.parse(this.rawData); + this.setDateAttributes(data); + this._initTemplate(data); + return; + } + + let hash = this.shorthash; + let forceRerender = false; + if(!hash) { + this._initTemplate(); // skeleton render + forceRerender = true; + + // It’s much faster if you supply a `hash` attribute! + hash = await urlStore.fetchHash(this.speedlifyUrl, this.url); + } + + if(!hash) { + console.error( ` could not find hash for URL (${this.url}):`, this ); + return; + } + + // Hasn’t already rendered. + if(!forceRerender) { + this._initTemplate(); // skeleton render + forceRerender = true; + } + + let data = await urlStore.fetchData(this.speedlifyUrl, hash); + this.setDateAttributes(data); + + this._initTemplate(data, forceRerender); + } + + setDateAttributes(data) { + if(!("Intl" in window) || !Intl.DateTimeFormat || !data.timestamp) { + return; + } + const date = new Intl.DateTimeFormat().format(new Date(data.timestamp)); + this.setAttribute("title", `Results from ${date}`); + } + + getScoreClass(score) { + if(score === "" || score === undefined) { + return "circle"; + } + if(score < .5) { + return "circle circle-bad"; + } + if(score < .9) { + return "circle circle-ok"; + } + return "circle circle-good"; + } + + getScoreHtml(title, value = "") { + return `${value ? parseInt(value * 100, 10) : "…"}`; + } + + render(data = {}) { + let attrs = SpeedlifyScore.attrs; + let content = []; + + // no extra attributes + if(!this.hasAttribute(attrs.requests) && !this.hasAttribute(attrs.weight) && !this.hasAttribute(attrs.rank) && !this.hasAttribute(attrs.rankChange) || this.hasAttribute(attrs.score)) { + content.push(this.getScoreHtml("Performance", data.lighthouse?.performance)); + content.push(this.getScoreHtml("Accessibility", data.lighthouse?.accessibility)); + content.push(this.getScoreHtml("Best Practices", data.lighthouse?.bestPractices)); + content.push(this.getScoreHtml("SEO", data.lighthouse?.seo)); + } + + let meta = []; + let summarySplit = data.weight?.summary?.split(" • ") || []; + if(this.hasAttribute(attrs.requests) && summarySplit.length) { + meta.push(`${summarySplit[0]}`); + } + if(this.hasAttribute(attrs.weight) && summarySplit.length) { + meta.push(`${summarySplit[1]}`); + } + if(data.ranks?.cumulative) { + if(this.hasAttribute(attrs.rank)) { + let rankUrl = this.getAttribute("rank-url"); + meta.push(`<${rankUrl ? `a href="${rankUrl}"` : "span"} class="rank">${data.ranks?.cumulative}`); + } + if(this.hasAttribute(attrs.rankChange) && data.previousRanks) { + let change = data.previousRanks?.cumulative - data.ranks?.cumulative; + meta.push(`${change !== 0 ? Math.abs(change) : ""}`); + } + } + if(meta.length) { + content.push(`${meta.join("")}`) + } + + return content.join(""); + } +} + +if(("customElements" in window) && ("fetch" in window)) { + SpeedlifyScore.register(); +} \ No newline at end of file diff --git a/docs/js/speedlify.js b/docs/js/speedlify.js new file mode 100644 index 00000000..651c6db9 --- /dev/null +++ b/docs/js/speedlify.js @@ -0,0 +1,11 @@ +const CacheAsset = require("@11ty/eleventy-cache-assets"); + +module.exports = async function() { + let url = "https://speedlify-aj.netlify.app/api/urls.json"; + let json = await CacheAsset(url, { + duration: "1w", + type: "json", + }); + + return json; +}; diff --git a/docs/marketing/index.html b/docs/marketing/index.html index 31d39668..2c65b577 100644 --- a/docs/marketing/index.html +++ b/docs/marketing/index.html @@ -1,329 +1,15 @@ - - - - - - - - Marketing | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Marketing

-

- -

- - - - - - - - - + } \ No newline at end of file diff --git a/docs/posts/index.html b/docs/posts/index.html deleted file mode 100644 index bb1acc0a..00000000 --- a/docs/posts/index.html +++ /dev/null @@ -1,322 +0,0 @@ - - - - - - - - Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-

Blog Posts

- - -
-
-
- - - - - - diff --git a/docs/presentations/color-picker/index.html b/docs/presentations/color-picker/index.html index 8da4a747..edfcb899 100644 --- a/docs/presentations/color-picker/index.html +++ b/docs/presentations/color-picker/index.html @@ -1,369 +1,15 @@ - - - - - - - - Color Picker | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - Back - -
- -
- - - Introduction slide - - - Slide 2 - - - Slide 3 - - - Slide 4 - - - Slide 5 - - - Slide 6 - - -
- - - - - - - + } \ No newline at end of file diff --git a/docs/presentations/index.html b/docs/presentations/index.html index 2c296291..bc018db1 100644 --- a/docs/presentations/index.html +++ b/docs/presentations/index.html @@ -1,329 +1,15 @@ - - - - - - - - Presentations | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Presentations

-

- A collection of presentations from over the years. -

- - - - - - - - - + } \ No newline at end of file diff --git a/docs/presentations/portfolio/index.html b/docs/presentations/portfolio/index.html index 8dcbe671..d2f406b4 100644 --- a/docs/presentations/portfolio/index.html +++ b/docs/presentations/portfolio/index.html @@ -1,423 +1,15 @@ - - - - - - - - Portfolio | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - Back - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - + } \ No newline at end of file diff --git a/docs/reference/index.html b/docs/reference/index.html deleted file mode 100644 index 14016bcb..00000000 --- a/docs/reference/index.html +++ /dev/null @@ -1,353 +0,0 @@ - - - - - - - - Reference links | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Reference links

-

- Links to various downloads and resources. -

- - -
- - - - - - - - - - - - - - - - - - - - - -
Collect Some MoreAn iOS application for tracking movies, comic books, collectables, and games.
GravatarGravatar QR Code
The Proxy GuyPatreon card
-
- -
- - - - - - - - diff --git a/docs/resume/index.html b/docs/resume/index.html index aba90bbb..71e553d0 100644 --- a/docs/resume/index.html +++ b/docs/resume/index.html @@ -1,560 +1,15 @@ - - - - - - - - Adam J. Jolicoeur | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Adam J. Jolicoeur

-

- -

- - -
-
-
-

Lead Program Manager & Designer

-

Component Assembly Systems, Inc. (Pelham, NY)

-

January 2024 - Present

-
- Program Management - Figma - Strategic Technology - Design Systems - Research -
-
-
-

As the Lead Program Manager and Designer, I am responsible for creating product roadmaps, maintaining team goals in order to complete deliverables, and managing the internal software suite.

-
    -
  • Lead Program Manager, CAS Strategic Technology Group
  • -
  • Lead UX Designer, StructureCloud
  • -
-
-
-
-
-

Senior UX Designer

-

Amazon.com, Inc
Amazon Software Builder Experience (Boston, MA)

-

August 2021 - September 2023

-
- Figma - Prototypes - UserTesting - Design Systems - Research - React -
-
-
-

As a Senior UXD on the Amazon Software Builder Experience team, I was responsible for the next generation of task management solutions for Amazon Issue Management. In this role, I oversaw the overall design and deliverables, implementation, collected feedback from internal users. As the lead designer on the project, I was responsible for providing cohesive experiences for all Amazon employees, regardless of role, in order to perform their duties with minimal friction.

-
    -
  • Lead Designer, Task Management
  • -
  • Led user testing and interview sessions
  • -
  • Created prototypes (Figma and React-based) for internal testing and validation using organization design system
  • -
-
-
-
-
-
-
-

Senior Software Engineer, UXD

-

Red Hat, Inc (Westford, MA)

-

December 2016 - August 2021

-
- Sketch - Adobe XD - HTML - SCSS - Git - OSS -
-
-
-

As a Senior Interaction Designer on the User Experience Design team, my responsibilities included creating user flows, wireframes, mockups, and proofs-of-concepts for products and websites across Red Hat. As part of my role, I became a core contributor to the PatternFly design system and lead designer of the Red Hat Developer Design Manual.

-
    -
  • UX Designer, OpenShift
  • -
  • Designer/Developer, Red Hat Developer Design Manual, developers.redhat.com
  • -
  • Designer/Developer, kubevirt.io
  • -
  • Interaction Designer, Red Had Managed Integration
  • -
  • Core Contributor, PatternFly Design System
  • -
-
-
-
-
-
-
-

User Experience Designer

-

Saylent Technologies (Franklin, MA)

-

November 2014 - July 2016

-
- Photoshop - Visual studio - HTML - CSS - Agile -
-
-
-

As the first in-house designer, I led the design and user research for the Account360 and Card360 platforms, working with a team of developers to improve product usability. The primary focus for this work was on easy-to-use and manageable interfaces for the financial industry.

-
    -
  • Lead designer, Account360 and Card360 platforms
  • -
  • Lead designer, product refreshes/corporate presentations and sales demonstrations
  • -
  • Created system for UX prototyping and usability testing
  • -
  • Developer, HTML/CSS for use in ASP.net applications
  • -
  • Created style guide/css framework for corporate products
  • -
-
-
-
-
-
-
-

Vice President, Design

-

Switchback, Inc. (Holden, MA)

-

November 2010 - August 2021 / September 2023 - January 2025

-
- Sketch - Adobe XD - HTML - SCSS - Wireframes -
-
-
-

As a contractor, I was the lead designer for multiple products and web interfaces including a redesign of an internal financial accounting product, an architectural drawing reference interface, and a time management system.

-
    -
  • - Product Design -
    • September 2024 - January 2025
    -
  • -
  • - Visual Design & Development -
    • November 2010 - December 2021
    -
  • -
  • - Web Design -
    • January 2003 - June 2008
    -
  • -
-
-
-
-
-
-
-

UI Software Engineer

-

Black Duck Software (Burlington, MA)

-

February 2013 - October 2014

-
- HTML - CSS/LESS - Bootstrap - Agile - Git -
-
-
-

As a UI Software Engineer, I worked with the development and design teams to turn the visual designs into working applications.

-
    -
  • Developed and implemented a software inventory and management system
  • -
  • Created and developed wireframes, templates, and live mockups for development team
  • -
  • Developed continuity and usability structure for high-interaction areas
  • -
  • Assisted design and development with a fluid and responsive navigation structure
  • -
-
-
-
-
-
-
-

Help Desk Analyst

-

Conservation Services Group (Westborough, MA)

-

June 2008 - November 2010

-
- JIRA - DevOps - Ubuntu - RHEL - VMs -
-
-
-

As a Help Desk Analyst, I managed and administered the internal IT Help Desk system while maintaining and active system for automated email responses and user-focused ticketing system.

-
    -
  • Managed and administered IT Help Desk System (Spiceworks)
  • -
  • Managed and administered Blackberry Enterprise Server 5.0
  • -
  • Administered FTP Server and FTP account using SuSE 9 and Ubuntu 8.04 LTS
  • -
  • Created and managed POP3 mail servers on Ubuntu for JIRA
  • -
  • Implemented SFTP Server using RHEL 5.4
  • -
  • Populated applications through Citrix; managed access to applications through AD security groups and settings
  • -
  • Assisted with VMware 4.0 configurations on Linux Servers
  • -
  • Assisted Senior Systems Engineer and Senior Network Engineer with daily administrative tasks in Active Directory and Exchange 2007
  • -
-
-
-
-
-
- - - -

Massachusetts College of Liberal Arts - North Adams, MA

- 2003 - 2008 -

Bachelor of Arts, Fine and Performing Arts, Music

-

Bachelor of Arts, Arts, Entertainment, and Media Management

-

Alpha Chi - National Scholars Honor Society - Who’s Who in American Colleges and Universities

-
- - - -
- Product Design - HTML / CSS - Iconography - Prototyping - Wireframes - User research - Figma / FigJam - Sketch - Design systems - Product management - Roadmapping -
-
- - - -

Various organizations that I have belonged to, past and present.

-

UXPA Boston

- 2017 - Present -

W3C CSS Working Group

- April 2020 - August 2021 -
-
-
- - -
- -
-
- -
-
- -
Site
-
-
- -
- - -
-
-
- -
Social
-
-
- -
-
- -
-
-
-
-
-
-
-
-
- Copyright © 2008-2025 - - Adam J. Jolicoeur - -
- -
-
- - - - - - - - -

Adam J. Jolicoeur

Lead Program Manager & Designer

Component Assembly Systems, Inc. (Pelham, NY)

January 2024 - Present

Program Management
Figma
Strategic Technology
Design Systems
Research

As the Lead Program Manager and Designer, I am responsible for creating product roadmaps, maintaining team goals in order to complete deliverables, and managing the internal software suite.

  • Lead Program Manager, CAS Strategic Technology Group
  • Lead UX Designer, StructureCloud

Senior UX Designer

Amazon.com, Inc
Amazon Software Builder Experience (Boston, MA)

August 2021 - September 2023

Figma
Prototypes
UserTesting
Design Systems
Research
React

As a Senior UXD on the Amazon Software Builder Experience team, I was responsible for the next generation of task management solutions for Amazon Issue Management. In this role, I oversaw the overall design and deliverables, implementation, collected feedback from internal users. As the lead designer on the project, I was responsible for providing cohesive experiences for all Amazon employees, regardless of role, in order to perform their duties with minimal friction.

  • Lead Designer, Task Management
  • Led user testing and interview sessions
  • Created prototypes (Figma and React-based) for internal testing and validation using organization design system

Senior Software Engineer, UXD

Red Hat, Inc (Westford, MA)

December 2016 - August 2021

Sketch
Adobe XD
HTML
SCSS
Git
OSS

As a Senior Interaction Designer on the User Experience Design team, my responsibilities included creating user flows, wireframes, mockups, and proofs-of-concepts for products and websites across Red Hat. As part of my role, I became a core contributor to the PatternFly design system and lead designer of the Red Hat Developer Design Manual.

  • UX Designer, OpenShift
  • Designer/Developer, Red Hat Developer Design Manual, developers.redhat.com
  • Designer/Developer, kubevirt.io
  • Interaction Designer, Red Had Managed Integration
  • Core Contributor, PatternFly Design System

User Experience Designer

Saylent Technologies (Franklin, MA)

November 2014 - July 2016

Photoshop
Visual studio
HTML
CSS
Agile

As the first in-house designer, I led the design and user research for the Account360 and Card360 platforms, working with a team of developers to improve product usability. The primary focus for this work was on easy-to-use and manageable interfaces for the financial industry.

  • Lead designer, Account360 and Card360 platforms
  • Lead designer, product refreshes/corporate presentations and sales demonstrations
  • Created system for UX prototyping and usability testing
  • Developer, HTML/CSS for use in ASP.net applications
  • Created style guide/css framework for corporate products

Vice President, Design

Switchback, Inc. (Holden, MA)

November 2010 - August 2021 / September 2023 - January 2025

Sketch
Adobe XD
HTML
SCSS
Wireframes

As a contractor, I was the lead designer for multiple products and web interfaces including a redesign of an internal financial accounting product, an architectural drawing reference interface, and a time management system.

  • Product Design
    • September 2024 - January 2025
  • Visual Design & Development
    • November 2010 - December 2021
  • Web Design
    • January 2003 - June 2008

UI Software Engineer

Black Duck Software (Burlington, MA)

February 2013 - October 2014

HTML
CSS/LESS
Bootstrap
Agile
Git

As a UI Software Engineer, I worked with the development and design teams to turn the visual designs into working applications.

  • Developed and implemented a software inventory and management system
  • Created and developed wireframes, templates, and live mockups for development team
  • Developed continuity and usability structure for high-interaction areas
  • Assisted design and development with a fluid and responsive navigation structure

Help Desk Analyst

Conservation Services Group (Westborough, MA)

June 2008 - November 2010

JIRA
DevOps
Ubuntu
RHEL
VMs

As a Help Desk Analyst, I managed and administered the internal IT Help Desk system while maintaining and active system for automated email responses and user-focused ticketing system.

  • Managed and administered IT Help Desk System (Spiceworks)
  • Managed and administered Blackberry Enterprise Server 5.0
  • Administered FTP Server and FTP account using SuSE 9 and Ubuntu 8.04 LTS
  • Created and managed POP3 mail servers on Ubuntu for JIRA
  • Implemented SFTP Server using RHEL 5.4
  • Populated applications through Citrix; managed access to applications through AD security groups and settings
  • Assisted with VMware 4.0 configurations on Linux Servers
  • Assisted Senior Systems Engineer and Senior Network Engineer with daily administrative tasks in Active Directory and Exchange 2007

Massachusetts College of Liberal Arts - North Adams, MA

2003 - 2008

Bachelor of Arts, Fine and Performing Arts, Music

Bachelor of Arts, Arts, Entertainment, and Media Management

Alpha Chi - National Scholars Honor Society - Who’s Who in American Colleges and Universities

Product Design
HTML / CSS
Iconography
Prototyping
Wireframes
User research
Figma / FigJam
Sketch
Design systems
Product management
Roadmapping

UXPA Boston
2017 - Present

W3C CSS Working Group
Red Hat, Inc.
April 2020 - August 2021

- - -
- - - + } \ No newline at end of file diff --git a/docs/sitemap.xml b/docs/sitemap.xml index ad4b3fe5..559e9af5 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -11,11 +11,6 @@ 2024-06-10T18:56:16.543Z - - https://www.adamjolicoeur.com/posts/ - 2024-11-14T14:48:46.333Z - - https://www.adamjolicoeur.com/archives/town-selectman/ 2025-01-01T18:28:28.784Z @@ -26,26 +21,6 @@ 2025-01-01T18:28:28.787Z - - https://www.adamjolicoeur.com/archives/archives/ - 2025-01-20T21:13:03.000Z - - - - https://www.adamjolicoeur.com/designs/ - 2025-01-20T21:13:03.000Z - - - - https://www.adamjolicoeur.com/designs/alm/ - 2025-01-20T21:13:03.000Z - - - - https://www.adamjolicoeur.com/designs/customer-engagement/ - 2025-01-20T21:13:03.000Z - - https://www.adamjolicoeur.com/designs/district25/ 2025-01-20T21:13:03.000Z @@ -76,119 +51,114 @@ 2025-01-20T21:13:03.000Z - - https://www.adamjolicoeur.com/icons-and-branding/icons/ - 2025-01-20T21:13:03.000Z - - https://www.adamjolicoeur.com/presentations/ 2025-01-20T21:13:03.000Z - https://www.adamjolicoeur.com/presentations/color-picker/ - 2025-01-20T21:13:03.000Z + https://www.adamjolicoeur.com/marketing/ + 2025-04-09T15:51:10.333Z - https://www.adamjolicoeur.com/presentations/portfolio/ - 2025-01-20T21:13:03.000Z + https://www.adamjolicoeur.com/apps/ + 2025-06-09T12:20:32.000Z - https://www.adamjolicoeur.com/testimonials/ - 2025-01-20T21:13:03.000Z + https://www.adamjolicoeur.com/contact/ + 2025-06-09T16:14:30.000Z - https://www.adamjolicoeur.com/designs/task-it/ - 2025-02-07T16:20:37.000Z + https://www.adamjolicoeur.com/apps/collectsomemore/ + 2025-06-12T18:44:37.000Z - https://www.adamjolicoeur.com/howto/ - 2025-02-07T19:04:52.227Z + https://www.adamjolicoeur.com/apps/collectsomemore/privacy/ + 2025-06-12T18:44:37.000Z - https://www.adamjolicoeur.com/marketing/ - 2025-04-09T15:51:10.333Z + https://www.adamjolicoeur.com/apps/collectsomemore/releases/ + 2025-06-12T18:44:37.000Z - https://www.adamjolicoeur.com/connect/ - 2025-04-17T15:34:36.000Z + https://www.adamjolicoeur.com/apps/collectsomemore/support/ + 2025-06-12T18:44:37.000Z - https://www.adamjolicoeur.com/404.html - 2025-05-17T15:21:56.768Z + https://www.adamjolicoeur.com/presentations/color-picker/ + 2025-06-20T18:51:06.000Z - https://www.adamjolicoeur.com/about/ - 2025-06-09T12:20:32.000Z + https://www.adamjolicoeur.com/presentations/portfolio/ + 2025-06-20T18:51:06.000Z - https://www.adamjolicoeur.com/apps/ - 2025-06-09T12:20:32.000Z + https://www.adamjolicoeur.com/testimonials/ + 2025-06-25T20:11:48.000Z - https://www.adamjolicoeur.com/credits/ - 2025-06-09T12:20:32.000Z + https://www.adamjolicoeur.com/about/ + 2025-06-27T19:40:57.000Z https://www.adamjolicoeur.com/resume/ - 2025-06-09T12:20:32.000Z + 2025-06-27T19:40:57.000Z - https://www.adamjolicoeur.com/uses/ - 2025-06-09T12:20:32.000Z + https://www.adamjolicoeur.com/connect/ + 2025-06-27T20:06:38.000Z - https://www.adamjolicoeur.com/contact/ - 2025-06-09T16:14:30.000Z + https://www.adamjolicoeur.com/credits/ + 2025-06-27T20:06:38.000Z - https://www.adamjolicoeur.com/apps/collectsomemore/ - 2025-06-12T18:44:37.000Z + https://www.adamjolicoeur.com/uses/ + 2025-06-27T20:06:38.000Z - https://www.adamjolicoeur.com/apps/collectsomemore/privacy/ - 2025-06-12T18:44:37.000Z + https://www.adamjolicoeur.com/designs/ + 2025-06-29T22:25:49.000Z - https://www.adamjolicoeur.com/apps/collectsomemore/releases/ - 2025-06-12T18:44:37.000Z + https://www.adamjolicoeur.com/development/ + 2025-06-29T22:29:04.000Z - https://www.adamjolicoeur.com/apps/collectsomemore/support/ - 2025-06-12T18:44:37.000Z + https://www.adamjolicoeur.com/designs/alm/ + 2025-06-30T17:28:48.000Z - https://www.adamjolicoeur.com/development/ - 2025-06-12T18:44:37.000Z + https://www.adamjolicoeur.com/designs/customer-engagement/ + 2025-06-30T17:28:48.000Z - https://www.adamjolicoeur.com/reference/ - 2025-06-13T15:17:40.610Z + https://www.adamjolicoeur.com/designs/task-it/ + 2025-06-30T17:28:48.000Z - https://www.adamjolicoeur.com/alfred/workflows/ - 2025-06-13T15:52:22.911Z + https://www.adamjolicoeur.com/404.html + 2025-07-01T14:40:09.839Z diff --git a/docs/streamdeck/examples/index.html b/docs/streamdeck/examples/index.html index f9c3d0db..2d6123eb 100644 --- a/docs/streamdeck/examples/index.html +++ b/docs/streamdeck/examples/index.html @@ -1,339 +1,15 @@ - - - - - - - - Stream Deck examples | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Stream Deck examples

-

- Examples of the icons available in my Stream Deck icon packs. -

- - -
-

Standard icons #

-

Preview image

-

Solid icons #

-

Downloads #

- -
- -
- - - - - + } \ No newline at end of file diff --git a/docs/testimonials/index.html b/docs/testimonials/index.html index 176d324a..ad71f6ca 100644 --- a/docs/testimonials/index.html +++ b/docs/testimonials/index.html @@ -1,355 +1,15 @@ - - - - - - - - Testimonials | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Testimonials

-

- I've been fortunate to work with some great people over the years. Here are some of the things they've said about me. -

- - -
-
-

[Adam] is self-driven and keeps stakeholders (Project manager, Development manager, Engineers) aligned on UX solutions…design proposals are spot-on and considerate of [our] diverse set of users.

-
-
-
-

Adam is highly engaged across 6+ major features at any given time and is somehow never the blocker. Designers like this don’t come around often.

-
-

Senior developer engineer

-
-
-
-
-

Adam’s working model is highly collaborative and amazingly fast

-
-

Front end engineer

-
-
-
-
-

…What stood out to me while working with Adam was his positivity and confidence through every obstacle, pivot, and deadline. He is a true team player.

-
-

Front end engineer

-
-
-
- -
- -
-
- -
-
- -
Site
-
-
- -
- - -
-
-
- -
Social
-
-
- -
-
- -
-
-
-
-
-
-
-
-
- Copyright © 2008-2025 - - Adam J. Jolicoeur - -
- -
-
- - - - - - - - -

Testimonials

I've been fortunate to work with some great people over the years. Here are some of the things they've said about me.

[Adam] is self-driven and keeps stakeholders (Project manager, Development manager, Engineers) aligned on UX solutions...design proposals are spot-on and considerate of [our] diverse set of users.

Adam is highly engaged across 6+ major features at any given time and is somehow never the blocker.Designers like this don't come around often.

Senior developer engineer

Adam's working model is highly collaborative and amazingly fast

Front end engineer

...What stood out to me while working with Adam was his positivity and confidence through every obstacle, pivot, and deadline.He is a true team player.

Front end engineer

- - -
- - - + } \ No newline at end of file diff --git a/docs/uses/index.html b/docs/uses/index.html index 4ce3f922..c433f524 100644 --- a/docs/uses/index.html +++ b/docs/uses/index.html @@ -1,217 +1,11 @@ - - - - - - - - Uses | Adam Jolicoeur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Uses

-

- What I use as a designer. -

- - -
-

Desk #

-
    -
  • My primary computer is a MacBook Pro 16" (M3), connected to an LG 32" ultrawide running at 2560 x 1440 resolution, with an external Keychron keyboard and Logitech mouse.
  • -
  • The MacBook sits inside of a RainDesign vertical stand, as I use a sit-stand desk and there is no room to have the MacBook open.
  • -
  • As part of my setup, I use an Elgato Streamdeck MK.2 (white) to help with switching between applications and not having to memorize keyboard shortcuts.
  • -
  • All of my hardware and accessories are plugged into a Caldigit TS3 Plus and I’ll never go without one again!
  • -
  • Everything sits on top of a custom, hand-made table that I built :-D
  • -
-

Software #

-

Design #

-
    -
  • Figma: current design tool for creating wireframes, mockups, and logos. I sync designs to Zeplin using the Figma plugin.
  • -
  • Zeplin: for sharing designs with development and product teams. I’ve found it great for reviews, comment tracking on revisions, and exporting assets.
  • -
-

Development #

-
    -
  • While I’ve used VSCode since its release, I’m writing this in Cursor to give it a try. While I find the “AI” stuff nice, I’m not sure I’ll pay for it.
  • -
  • Currently using iTerm2 as my terminal, though I’m giving Warp a try after hearing about it from Wes Bos.
  • -
-

Services #

-
    -
  • I like to set my device DNS to 1.1.1.1, which is a free, private DNS from Cloudflare.
  • -
  • Speaking of Cloudflare, I use it to monitor site traffic and such. Basic usage but I find it helpful.
  • -
  • For the last six years, I’ve used Netlify for previewing pull requests, running prototype sites, and user testing, but have recently switched to Cloudflare Workers.
  • -
  • All of my sites are published using Cloudflare Pages with various actions (repository dependent) dictating how they are published.
  • -
-

Desktop Apps #

-
    -
  • Arc browser: my primary browser, though I also use Safari for creating web apps (Bluesky / Threads / GitHub).
  • -
  • Parallels Desktop: sometimes I need to use different operating systems and I turn to this for Windows 11, Ubuntu, and Fedora.
  • -
  • Apple Notes: why use something else when this does the job? Tags, Smart Folders, and shortcuts are key.
  • -
  • Raycast: switched off of Alfred a while back and found this to be indispensable in my daily work.
  • -
-

Travel Gear #

-

All of my travel gear fits into a Peak Design 20L 20L bag and a small “tech pouch” for cables, charging bricks, Beats Studio Buds, and my Logitech mouse.

-

This Site #

-

This site was created using Eleventy (Markdown + Nunjucks), after many years of trying out essentially everything that was “hip” at a given time. In the end, I just needed something simple that I could build upon, but also could be used for other projects (with an easy-to-simplify structure). For the UI, I use the Bootstrap Grid system as I didn’t want to write one from scratch. Various UI elements of the site are made using Shoelace (buttons, carousel, details - I’m really starting to get into Web Components) with custom pieces on top.

-
Be sure to check out uses.tech to see other /uses pages!
-

You can also find me on the Eleventy Leaderboards!

- - - -
-
- -
-
- -
Site
-
-
- -
- - -
-
-
- -
Social
-
-
- -
-
- -
-
-
-
-
-
-
-
-
- Copyright © 2008-2025 - - Adam J. Jolicoeur - -
- -
-
- - - - - - - - - - -
- - - - - - + } \ No newline at end of file diff --git a/hint-report/http-localhost-8081.html b/hint-report/http-localhost-8081.html deleted file mode 100644 index 41070240..00000000 --- a/hint-report/http-localhost-8081.html +++ /dev/null @@ -1,20122 +0,0 @@ - - - - - Webhint - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-
-

scanning 100%

-

- scan time: 00:14 -

-
-
-
-

hints

-

523

-
-
- - -
-
-
-

webhint version: 7.1.13

-
- -
-
-
- -
-

Hints

-
- -
-
-
-

Accessibility

- - - - -
- - -
- axe/name-role-value: 4 hints -
- - - - -
-

- hint #1: Links must have discernible text: Element has no title attribute -

- -

- - http://localhost:8081/ - -

- - -
- <a href="https://www.linkedin.com/in/ajjolicoeur/" rel="noopener noreferrer" class="icon-link pe-1" target="_blank" alt="External link to view my LinkedIn profile"> -
- - - - -
- - - - -
-

- hint #2: Links must have discernible text: Element has no title attribute -

- -

- - http://localhost:8081/ - -

- - -
- <a href="https://github.com/AdamJ" rel="noopener noreferrer" class="icon-link pe-1" target="_blank" alt="External link to view my GitHub profile"> -
- - - - -
- - - - -
-

- hint #3: Links must have discernible text: Element has no title attribute -

- -

- - http://localhost:8081/ - -

- - -
- <a href="/adamjol.bsky.social" rel="noopener noreferrer" class="icon-link pe-1" target="_blank" alt="External link to view my Figma community profile"> -
- - - - -
- - - - -
-

- hint #4: Links must have discernible text: Element has no title attribute -

- -

- - http://localhost:8081/ - -

- - -
- <a href="https://codepen.io/AdamJolicoeur" rel="noopener noreferrer" class="icon-link" target="_blank" alt="External link to view my Codepen.io profile"> -
- - - - -
- - - - -
-
- - - -
- -
-
-

PWA

- -
- -
-
-

No issues

-
-
- - -
- -
-
-

Pitfalls

- - - - -
- - -
- no-inline-styles: 10 hints -
- - - - -
-

- hint #1: CSS inline styles should not be used, move styles to an external CSS file -

- -

- - http://localhost:8081/ - -

- - -
- <body style=" - height: 100vh; - position: relative;"> -
- - -
- - -
-

- hint #2: CSS inline styles should not be used, move styles to an external CSS file -

- -

- - http://localhost:8081/ - -

- - -
- <sl-icon-button name="info-square" label="Information" style="font-size: 1.5rem;"></sl-icon-button> -
- - -
- - -
-

- hint #3: CSS inline styles should not be used, move styles to an external CSS file -

- -

- - http://localhost:8081/ - -

- - -
- <div class="title-content" style="margin-bottom: 2rem;"> -
- - -
- - -
-

- hint #4: CSS inline styles should not be used, move styles to an external CSS file -

- -

- - http://localhost:8081/ - -

- - -
- <div style="position: absolute; bottom: 10%; text-align: center;"> -
- - -
- - -
-

- hint #5: CSS inline styles should not be used, move styles to an external CSS file -

- -

- - http://localhost:8081/ - -

- - -
- <ul class="d-flex my-0 px-0" style="flex-direction: column;"> -
- - -
- - -
-

- hint #6: CSS inline styles should not be used, move styles to an external CSS file -

- -

- - http://localhost:8081/ - -

- - -
- <ul class="d-flex my-0 px-0" style="flex-direction: column;"> -
- - -
- - -
-

- hint #7: CSS inline styles should not be used, move styles to an external CSS file -

- -

- - http://localhost:8081/ - -

- - -
- <ul class="d-flex my-0 px-0" style="flex-direction: column;"> -
- - -
- - -
-

- hint #8: CSS inline styles should not be used, move styles to an external CSS file -

- -

- - http://localhost:8081/ - -

- - -
- <ul class="d-flex my-0 px-0" style="flex-direction: column;"> -
- - -
- - -
-

- hint #9: CSS inline styles should not be used, move styles to an external CSS file -

- -

- - http://localhost:8081/ - -

- - -
- <ul class="d-flex my-0 px-0" style="flex-direction: column;"> -
- - -
- - -
-

- hint #10: CSS inline styles should not be used, move styles to an external CSS file -

- -

- - http://localhost:8081/ - -

- - -
- <hr style="margin: 0; border-color: rgba(255, 255, 255, .1);"> -
- - -
- - -
-
- - -
- css-prefix-order: 4 hints -
- - - - -
-

- hint #1: 'animation' should be listed after '-webkit-animation'. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .arrows path { - stroke: #bfe7fa; - fill: transparent; - stroke-width: 1px; - animation: arrow 2s infinite; - -webkit-animation: arrow 2s infinite; -} -
- - -
- - -
-

- hint #2: 'animation-delay' should be listed after '-webkit-animation-delay'. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .arrows path.a1 { - animation-delay: -1s; - -webkit-animation-delay: -1s; - /* Safari 和 Chrome */ -} -
- - -
- - -
-

- hint #3: 'animation-delay' should be listed after '-webkit-animation-delay'. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .arrows path.a2 { - animation-delay: -0.5s; - -webkit-animation-delay: -0.5s; - /* Safari 和 Chrome */ -} -
- - -
- - -
-

- hint #4: 'animation-delay' should be listed after '-webkit-animation-delay'. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .arrows path.a3 { - animation-delay: 0s; - -webkit-animation-delay: 0s; - /* Safari 和 Chrome */ -} -
- - -
- - -
-
- - - -
- -
-
-

Compatibility

- - - - -
- - -
- meta-charset-utf-8: 1 hints -
- - - - -
-

- hint #1: 'charset' meta element should be the first thing in '<head>'. -

- -

- - http://localhost:8081/ - -

- - -
- <meta charset="UTF-8"> -
- - -
- - -
-
- - -
- compat-api/css: 492 hints -
- - - - -
-

- hint #1: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .row { - flex-wrap: wrap; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #2: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .col { - flex: 1 0 0%; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #3: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .row-cols-auto > * { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #4: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .row-cols-1 > * { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #5: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .row-cols-2 > * { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #6: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .row-cols-3 > * { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #7: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .row-cols-4 > * { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #8: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .row-cols-5 > * { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #9: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .row-cols-6 > * { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #10: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .col-auto { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #11: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .col-1 { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #12: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .col-2 { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #13: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .col-3 { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #14: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .col-4 { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #15: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .col-5 { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #16: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .col-6 { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #17: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .col-7 { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #18: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .col-8 { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #19: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .col-9 { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #20: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .col-10 { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #21: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .col-11 { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #22: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .col-12 { - flex: 0 0 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #23: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .col-sm { - flex: 1 0 0%; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #24: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .row-cols-sm-auto > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #25: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .row-cols-sm-1 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #26: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .row-cols-sm-2 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #27: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .row-cols-sm-3 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #28: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .row-cols-sm-4 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #29: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .row-cols-sm-5 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #30: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .row-cols-sm-6 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #31: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .col-sm-auto { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #32: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .col-sm-1 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #33: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .col-sm-2 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #34: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .col-sm-3 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #35: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .col-sm-4 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #36: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .col-sm-5 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #37: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .col-sm-6 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #38: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .col-sm-7 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #39: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .col-sm-8 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #40: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .col-sm-9 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #41: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .col-sm-10 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #42: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .col-sm-11 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #43: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .col-sm-12 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #44: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .col-md { - flex: 1 0 0%; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #45: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .row-cols-md-auto > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #46: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .row-cols-md-1 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #47: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .row-cols-md-2 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #48: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .row-cols-md-3 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #49: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .row-cols-md-4 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #50: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .row-cols-md-5 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #51: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .row-cols-md-6 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #52: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .col-md-auto { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #53: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .col-md-1 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #54: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .col-md-2 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #55: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .col-md-3 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #56: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .col-md-4 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #57: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .col-md-5 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #58: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .col-md-6 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #59: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .col-md-7 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #60: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .col-md-8 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #61: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .col-md-9 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #62: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .col-md-10 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #63: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .col-md-11 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #64: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .col-md-12 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #65: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .col-lg { - flex: 1 0 0%; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #66: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .row-cols-lg-auto > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #67: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .row-cols-lg-1 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #68: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .row-cols-lg-2 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #69: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .row-cols-lg-3 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #70: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .row-cols-lg-4 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #71: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .row-cols-lg-5 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #72: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .row-cols-lg-6 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #73: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .col-lg-auto { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #74: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .col-lg-1 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #75: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .col-lg-2 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #76: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .col-lg-3 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #77: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .col-lg-4 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #78: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .col-lg-5 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #79: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .col-lg-6 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #80: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .col-lg-7 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #81: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .col-lg-8 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #82: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .col-lg-9 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #83: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .col-lg-10 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #84: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .col-lg-11 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #85: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .col-lg-12 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #86: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .col-xl { - flex: 1 0 0%; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #87: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .row-cols-xl-auto > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #88: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .row-cols-xl-1 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #89: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .row-cols-xl-2 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #90: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .row-cols-xl-3 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #91: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .row-cols-xl-4 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #92: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .row-cols-xl-5 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #93: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .row-cols-xl-6 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #94: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .col-xl-auto { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #95: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .col-xl-1 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #96: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .col-xl-2 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #97: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .col-xl-3 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #98: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .col-xl-4 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #99: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .col-xl-5 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #100: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .col-xl-6 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #101: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .col-xl-7 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #102: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .col-xl-8 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #103: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .col-xl-9 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #104: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .col-xl-10 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #105: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .col-xl-11 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #106: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .col-xl-12 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #107: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .col-xxl { - flex: 1 0 0%; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #108: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .row-cols-xxl-auto > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #109: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .row-cols-xxl-1 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #110: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .row-cols-xxl-2 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #111: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .row-cols-xxl-3 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #112: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .row-cols-xxl-4 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #113: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .row-cols-xxl-5 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #114: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .row-cols-xxl-6 > * { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #115: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .col-xxl-auto { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #116: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .col-xxl-1 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #117: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .col-xxl-2 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #118: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .col-xxl-3 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #119: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .col-xxl-4 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #120: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .col-xxl-5 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #121: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .col-xxl-6 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #122: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .col-xxl-7 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #123: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .col-xxl-8 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #124: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .col-xxl-9 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #125: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .col-xxl-10 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #126: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .col-xxl-11 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #127: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .col-xxl-12 { - flex: 0 0 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #128: 'display: grid' is not supported by Internet Explorer. Add 'display: -ms-grid' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .d-grid { - display: grid; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #129: 'display: inline-grid' is not supported by Internet Explorer. Add 'display: -ms-inline-grid' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .d-inline-grid { - display: inline-grid; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #130: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .flex-fill { - flex: 1 1 auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #131: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .flex-row { - flex-direction: row; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #132: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .flex-column { - flex-direction: column; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #133: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .flex-row-reverse { - flex-direction: row-reverse; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #134: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .flex-column-reverse { - flex-direction: column-reverse; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #135: 'flex-grow' is not supported by Internet Explorer < 11. Add '-ms-flex-positive' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .flex-grow-0 { - flex-grow: 0; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #136: 'flex-grow' is not supported by Internet Explorer < 11. Add '-ms-flex-positive' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .flex-grow-1 { - flex-grow: 1; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #137: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .flex-wrap { - flex-wrap: wrap; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #138: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .flex-nowrap { - flex-wrap: nowrap; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #139: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .flex-wrap-reverse { - flex-wrap: wrap-reverse; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #140: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .justify-content-start { - justify-content: flex-start; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #141: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .justify-content-end { - justify-content: flex-end; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #142: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .justify-content-center { - justify-content: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #143: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .justify-content-between { - justify-content: space-between; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #144: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .justify-content-around { - justify-content: space-around; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #145: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .justify-content-evenly { - justify-content: space-evenly; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #146: 'justify-content: space-evenly' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .justify-content-evenly { - justify-content: space-evenly; -} -
- - -
- - -
-

- hint #147: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .align-items-start { - align-items: flex-start; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #148: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .align-items-end { - align-items: flex-end; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #149: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .align-items-center { - align-items: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #150: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .align-items-baseline { - align-items: baseline; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #151: 'align-items: baseline' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .align-items-baseline { - align-items: baseline; -} -
- - -
- - -
-

- hint #152: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .align-items-stretch { - align-items: stretch; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #153: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .align-content-start { - align-content: flex-start; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #154: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .align-content-end { - align-content: flex-end; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #155: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .align-content-center { - align-content: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #156: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .align-content-between { - align-content: space-between; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #157: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .align-content-around { - align-content: space-around; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #158: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .align-content-stretch { - align-content: stretch; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #159: 'align-content: stretch' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .align-content-stretch { - align-content: stretch; -} -
- - -
- - -
-

- hint #160: 'align-self: baseline' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .align-self-baseline { - align-self: baseline; -} -
- - -
- - -
-

- hint #161: 'align-self: stretch' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .align-self-stretch { - align-self: stretch; -} -
- - -
- - -
-

- hint #162: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .order-first { - order: -1; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #163: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .order-0 { - order: 0; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #164: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .order-1 { - order: 1; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #165: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .order-2 { - order: 2; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #166: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .order-3 { - order: 3; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #167: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .order-4 { - order: 4; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #168: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .order-5 { - order: 5; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #169: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .order-last { - order: 6; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #170: 'display: grid' is not supported by Internet Explorer. Add 'display: -ms-grid' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .d-sm-grid { - display: grid; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #171: 'display: inline-grid' is not supported by Internet Explorer. Add 'display: -ms-inline-grid' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .d-sm-inline-grid { - display: inline-grid; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #172: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .flex-sm-fill { - flex: 1 1 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #173: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .flex-sm-row { - flex-direction: row; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #174: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .flex-sm-column { - flex-direction: column; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #175: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .flex-sm-row-reverse { - flex-direction: row-reverse; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #176: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .flex-sm-column-reverse { - flex-direction: column-reverse; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #177: 'flex-grow' is not supported by Internet Explorer < 11. Add '-ms-flex-positive' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .flex-sm-grow-0 { - flex-grow: 0; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #178: 'flex-grow' is not supported by Internet Explorer < 11. Add '-ms-flex-positive' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .flex-sm-grow-1 { - flex-grow: 1; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #179: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .flex-sm-wrap { - flex-wrap: wrap; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #180: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .flex-sm-nowrap { - flex-wrap: nowrap; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #181: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #182: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .justify-content-sm-start { - justify-content: flex-start; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #183: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .justify-content-sm-end { - justify-content: flex-end; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #184: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .justify-content-sm-center { - justify-content: center; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #185: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .justify-content-sm-between { - justify-content: space-between; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #186: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .justify-content-sm-around { - justify-content: space-around; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #187: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .justify-content-sm-evenly { - justify-content: space-evenly; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #188: 'justify-content: space-evenly' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .justify-content-sm-evenly { - justify-content: space-evenly; - } -} -
- - -
- - -
-

- hint #189: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .align-items-sm-start { - align-items: flex-start; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #190: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .align-items-sm-end { - align-items: flex-end; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #191: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .align-items-sm-center { - align-items: center; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #192: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .align-items-sm-baseline { - align-items: baseline; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #193: 'align-items: baseline' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .align-items-sm-baseline { - align-items: baseline; - } -} -
- - -
- - -
-

- hint #194: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .align-items-sm-stretch { - align-items: stretch; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #195: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .align-content-sm-start { - align-content: flex-start; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #196: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .align-content-sm-end { - align-content: flex-end; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #197: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .align-content-sm-center { - align-content: center; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #198: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .align-content-sm-between { - align-content: space-between; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #199: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .align-content-sm-around { - align-content: space-around; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #200: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .align-content-sm-stretch { - align-content: stretch; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #201: 'align-content: stretch' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .align-content-sm-stretch { - align-content: stretch; - } -} -
- - -
- - -
-

- hint #202: 'align-self: baseline' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .align-self-sm-baseline { - align-self: baseline; - } -} -
- - -
- - -
-

- hint #203: 'align-self: stretch' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .align-self-sm-stretch { - align-self: stretch; - } -} -
- - -
- - -
-

- hint #204: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .order-sm-first { - order: -1; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #205: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .order-sm-0 { - order: 0; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #206: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .order-sm-1 { - order: 1; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #207: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .order-sm-2 { - order: 2; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #208: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .order-sm-3 { - order: 3; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #209: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .order-sm-4 { - order: 4; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #210: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .order-sm-5 { - order: 5; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #211: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 576px) { - .order-sm-last { - order: 6; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #212: 'display: grid' is not supported by Internet Explorer. Add 'display: -ms-grid' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .d-md-grid { - display: grid; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #213: 'display: inline-grid' is not supported by Internet Explorer. Add 'display: -ms-inline-grid' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .d-md-inline-grid { - display: inline-grid; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #214: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .flex-md-fill { - flex: 1 1 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #215: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .flex-md-row { - flex-direction: row; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #216: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .flex-md-column { - flex-direction: column; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #217: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .flex-md-row-reverse { - flex-direction: row-reverse; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #218: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .flex-md-column-reverse { - flex-direction: column-reverse; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #219: 'flex-grow' is not supported by Internet Explorer < 11. Add '-ms-flex-positive' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .flex-md-grow-0 { - flex-grow: 0; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #220: 'flex-grow' is not supported by Internet Explorer < 11. Add '-ms-flex-positive' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .flex-md-grow-1 { - flex-grow: 1; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #221: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .flex-md-wrap { - flex-wrap: wrap; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #222: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .flex-md-nowrap { - flex-wrap: nowrap; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #223: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #224: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .justify-content-md-start { - justify-content: flex-start; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #225: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .justify-content-md-end { - justify-content: flex-end; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #226: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .justify-content-md-center { - justify-content: center; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #227: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .justify-content-md-between { - justify-content: space-between; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #228: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .justify-content-md-around { - justify-content: space-around; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #229: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .justify-content-md-evenly { - justify-content: space-evenly; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #230: 'justify-content: space-evenly' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .justify-content-md-evenly { - justify-content: space-evenly; - } -} -
- - -
- - -
-

- hint #231: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .align-items-md-start { - align-items: flex-start; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #232: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .align-items-md-end { - align-items: flex-end; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #233: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .align-items-md-center { - align-items: center; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #234: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .align-items-md-baseline { - align-items: baseline; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #235: 'align-items: baseline' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .align-items-md-baseline { - align-items: baseline; - } -} -
- - -
- - -
-

- hint #236: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .align-items-md-stretch { - align-items: stretch; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #237: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .align-content-md-start { - align-content: flex-start; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #238: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .align-content-md-end { - align-content: flex-end; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #239: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .align-content-md-center { - align-content: center; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #240: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .align-content-md-between { - align-content: space-between; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #241: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .align-content-md-around { - align-content: space-around; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #242: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .align-content-md-stretch { - align-content: stretch; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #243: 'align-content: stretch' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .align-content-md-stretch { - align-content: stretch; - } -} -
- - -
- - -
-

- hint #244: 'align-self: baseline' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .align-self-md-baseline { - align-self: baseline; - } -} -
- - -
- - -
-

- hint #245: 'align-self: stretch' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .align-self-md-stretch { - align-self: stretch; - } -} -
- - -
- - -
-

- hint #246: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .order-md-first { - order: -1; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #247: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .order-md-0 { - order: 0; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #248: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .order-md-1 { - order: 1; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #249: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .order-md-2 { - order: 2; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #250: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .order-md-3 { - order: 3; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #251: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .order-md-4 { - order: 4; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #252: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .order-md-5 { - order: 5; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #253: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 768px) { - .order-md-last { - order: 6; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #254: 'display: grid' is not supported by Internet Explorer. Add 'display: -ms-grid' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .d-lg-grid { - display: grid; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #255: 'display: inline-grid' is not supported by Internet Explorer. Add 'display: -ms-inline-grid' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .d-lg-inline-grid { - display: inline-grid; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #256: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .flex-lg-fill { - flex: 1 1 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #257: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .flex-lg-row { - flex-direction: row; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #258: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .flex-lg-column { - flex-direction: column; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #259: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .flex-lg-row-reverse { - flex-direction: row-reverse; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #260: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .flex-lg-column-reverse { - flex-direction: column-reverse; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #261: 'flex-grow' is not supported by Internet Explorer < 11. Add '-ms-flex-positive' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .flex-lg-grow-0 { - flex-grow: 0; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #262: 'flex-grow' is not supported by Internet Explorer < 11. Add '-ms-flex-positive' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .flex-lg-grow-1 { - flex-grow: 1; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #263: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .flex-lg-wrap { - flex-wrap: wrap; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #264: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .flex-lg-nowrap { - flex-wrap: nowrap; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #265: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #266: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .justify-content-lg-start { - justify-content: flex-start; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #267: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .justify-content-lg-end { - justify-content: flex-end; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #268: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .justify-content-lg-center { - justify-content: center; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #269: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .justify-content-lg-between { - justify-content: space-between; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #270: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .justify-content-lg-around { - justify-content: space-around; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #271: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .justify-content-lg-evenly { - justify-content: space-evenly; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #272: 'justify-content: space-evenly' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .justify-content-lg-evenly { - justify-content: space-evenly; - } -} -
- - -
- - -
-

- hint #273: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .align-items-lg-start { - align-items: flex-start; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #274: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .align-items-lg-end { - align-items: flex-end; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #275: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .align-items-lg-center { - align-items: center; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #276: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .align-items-lg-baseline { - align-items: baseline; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #277: 'align-items: baseline' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .align-items-lg-baseline { - align-items: baseline; - } -} -
- - -
- - -
-

- hint #278: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .align-items-lg-stretch { - align-items: stretch; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #279: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .align-content-lg-start { - align-content: flex-start; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #280: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .align-content-lg-end { - align-content: flex-end; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #281: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .align-content-lg-center { - align-content: center; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #282: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .align-content-lg-between { - align-content: space-between; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #283: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .align-content-lg-around { - align-content: space-around; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #284: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .align-content-lg-stretch { - align-content: stretch; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #285: 'align-content: stretch' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .align-content-lg-stretch { - align-content: stretch; - } -} -
- - -
- - -
-

- hint #286: 'align-self: baseline' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .align-self-lg-baseline { - align-self: baseline; - } -} -
- - -
- - -
-

- hint #287: 'align-self: stretch' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .align-self-lg-stretch { - align-self: stretch; - } -} -
- - -
- - -
-

- hint #288: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .order-lg-first { - order: -1; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #289: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .order-lg-0 { - order: 0; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #290: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .order-lg-1 { - order: 1; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #291: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .order-lg-2 { - order: 2; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #292: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .order-lg-3 { - order: 3; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #293: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .order-lg-4 { - order: 4; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #294: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .order-lg-5 { - order: 5; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #295: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 992px) { - .order-lg-last { - order: 6; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #296: 'display: grid' is not supported by Internet Explorer. Add 'display: -ms-grid' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .d-xl-grid { - display: grid; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #297: 'display: inline-grid' is not supported by Internet Explorer. Add 'display: -ms-inline-grid' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .d-xl-inline-grid { - display: inline-grid; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #298: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .flex-xl-fill { - flex: 1 1 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #299: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .flex-xl-row { - flex-direction: row; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #300: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .flex-xl-column { - flex-direction: column; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #301: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .flex-xl-row-reverse { - flex-direction: row-reverse; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #302: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .flex-xl-column-reverse { - flex-direction: column-reverse; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #303: 'flex-grow' is not supported by Internet Explorer < 11. Add '-ms-flex-positive' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .flex-xl-grow-0 { - flex-grow: 0; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #304: 'flex-grow' is not supported by Internet Explorer < 11. Add '-ms-flex-positive' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .flex-xl-grow-1 { - flex-grow: 1; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #305: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .flex-xl-wrap { - flex-wrap: wrap; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #306: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .flex-xl-nowrap { - flex-wrap: nowrap; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #307: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #308: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .justify-content-xl-start { - justify-content: flex-start; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #309: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .justify-content-xl-end { - justify-content: flex-end; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #310: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .justify-content-xl-center { - justify-content: center; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #311: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .justify-content-xl-between { - justify-content: space-between; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #312: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .justify-content-xl-around { - justify-content: space-around; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #313: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .justify-content-xl-evenly { - justify-content: space-evenly; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #314: 'justify-content: space-evenly' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .justify-content-xl-evenly { - justify-content: space-evenly; - } -} -
- - -
- - -
-

- hint #315: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .align-items-xl-start { - align-items: flex-start; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #316: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .align-items-xl-end { - align-items: flex-end; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #317: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .align-items-xl-center { - align-items: center; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #318: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .align-items-xl-baseline { - align-items: baseline; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #319: 'align-items: baseline' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .align-items-xl-baseline { - align-items: baseline; - } -} -
- - -
- - -
-

- hint #320: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .align-items-xl-stretch { - align-items: stretch; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #321: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .align-content-xl-start { - align-content: flex-start; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #322: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .align-content-xl-end { - align-content: flex-end; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #323: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .align-content-xl-center { - align-content: center; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #324: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .align-content-xl-between { - align-content: space-between; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #325: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .align-content-xl-around { - align-content: space-around; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #326: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .align-content-xl-stretch { - align-content: stretch; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #327: 'align-content: stretch' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .align-content-xl-stretch { - align-content: stretch; - } -} -
- - -
- - -
-

- hint #328: 'align-self: baseline' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .align-self-xl-baseline { - align-self: baseline; - } -} -
- - -
- - -
-

- hint #329: 'align-self: stretch' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .align-self-xl-stretch { - align-self: stretch; - } -} -
- - -
- - -
-

- hint #330: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .order-xl-first { - order: -1; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #331: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .order-xl-0 { - order: 0; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #332: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .order-xl-1 { - order: 1; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #333: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .order-xl-2 { - order: 2; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #334: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .order-xl-3 { - order: 3; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #335: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .order-xl-4 { - order: 4; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #336: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .order-xl-5 { - order: 5; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #337: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1200px) { - .order-xl-last { - order: 6; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #338: 'display: grid' is not supported by Internet Explorer. Add 'display: -ms-grid' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .d-xxl-grid { - display: grid; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #339: 'display: inline-grid' is not supported by Internet Explorer. Add 'display: -ms-inline-grid' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .d-xxl-inline-grid { - display: inline-grid; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #340: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .flex-xxl-fill { - flex: 1 1 auto; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #341: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .flex-xxl-row { - flex-direction: row; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #342: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .flex-xxl-column { - flex-direction: column; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #343: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .flex-xxl-row-reverse { - flex-direction: row-reverse; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #344: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .flex-xxl-column-reverse { - flex-direction: column-reverse; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #345: 'flex-grow' is not supported by Internet Explorer < 11. Add '-ms-flex-positive' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .flex-xxl-grow-0 { - flex-grow: 0; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #346: 'flex-grow' is not supported by Internet Explorer < 11. Add '-ms-flex-positive' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .flex-xxl-grow-1 { - flex-grow: 1; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #347: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .flex-xxl-wrap { - flex-wrap: wrap; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #348: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .flex-xxl-nowrap { - flex-wrap: nowrap; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #349: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .flex-xxl-wrap-reverse { - flex-wrap: wrap-reverse; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #350: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .justify-content-xxl-start { - justify-content: flex-start; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #351: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .justify-content-xxl-end { - justify-content: flex-end; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #352: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .justify-content-xxl-center { - justify-content: center; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #353: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .justify-content-xxl-between { - justify-content: space-between; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #354: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .justify-content-xxl-around { - justify-content: space-around; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #355: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .justify-content-xxl-evenly { - justify-content: space-evenly; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #356: 'justify-content: space-evenly' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .justify-content-xxl-evenly { - justify-content: space-evenly; - } -} -
- - -
- - -
-

- hint #357: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .align-items-xxl-start { - align-items: flex-start; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #358: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .align-items-xxl-end { - align-items: flex-end; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #359: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .align-items-xxl-center { - align-items: center; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #360: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .align-items-xxl-baseline { - align-items: baseline; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #361: 'align-items: baseline' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .align-items-xxl-baseline { - align-items: baseline; - } -} -
- - -
- - -
-

- hint #362: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .align-items-xxl-stretch { - align-items: stretch; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #363: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .align-content-xxl-start { - align-content: flex-start; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #364: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .align-content-xxl-end { - align-content: flex-end; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #365: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .align-content-xxl-center { - align-content: center; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #366: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .align-content-xxl-between { - align-content: space-between; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #367: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .align-content-xxl-around { - align-content: space-around; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #368: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .align-content-xxl-stretch { - align-content: stretch; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #369: 'align-content: stretch' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .align-content-xxl-stretch { - align-content: stretch; - } -} -
- - -
- - -
-

- hint #370: 'align-self: baseline' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .align-self-xxl-baseline { - align-self: baseline; - } -} -
- - -
- - -
-

- hint #371: 'align-self: stretch' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .align-self-xxl-stretch { - align-self: stretch; - } -} -
- - -
- - -
-

- hint #372: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .order-xxl-first { - order: -1; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #373: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .order-xxl-0 { - order: 0; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #374: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .order-xxl-1 { - order: 1; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #375: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .order-xxl-2 { - order: 2; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #376: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .order-xxl-3 { - order: 3; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #377: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .order-xxl-4 { - order: 4; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #378: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .order-xxl-5 { - order: 5; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #379: 'order' is not supported by Internet Explorer < 11. Add '-ms-order' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (min-width: 1400px) { - .order-xxl-last { - order: 6; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #380: 'display: grid' is not supported by Internet Explorer. Add 'display: -ms-grid' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media print { - .d-print-grid { - display: grid; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #381: 'display: inline-grid' is not supported by Internet Explorer. Add 'display: -ms-inline-grid' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media print { - .d-print-inline-grid { - display: inline-grid; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #382: 'stroke' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .arrows path { - stroke: #bfe7fa; -} -
- - -
- - -
-

- hint #383: 'fill' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .arrows path { - fill: transparent; -} -
- - -
- - -
-

- hint #384: 'stroke-width' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .arrows path { - stroke-width: 1px; -} -
- - -
- - -
-

- hint #385: 'font-optical-sizing' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .oswald-light { - font-optical-sizing: auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #386: 'font-optical-sizing' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .oswald-regular { - font-optical-sizing: auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #387: 'font-optical-sizing' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .oswald-medium { - font-optical-sizing: auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #388: 'font-optical-sizing' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .oswald-semibold { - font-optical-sizing: auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #389: 'font-optical-sizing' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .oswald-bold { - font-optical-sizing: auto; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #390: 'color-scheme' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (prefers-color-scheme: dark) { - :root { - color-scheme: light dark; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #391: 'filter' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (prefers-color-scheme: dark) { - img { - filter: brightness(0.8) contrast(1.2); - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #392: 'color-scheme' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (prefers-color-scheme: dark) { - :root { - color-scheme: light dark; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #393: 'filter' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (prefers-color-scheme: dark) { - img { - filter: brightness(0.8) contrast(1.2); - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #394: 'color-scheme' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (prefers-color-scheme: dark) { - :root { - color-scheme: light dark; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #395: 'filter' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (prefers-color-scheme: dark) { - img { - filter: brightness(0.8) contrast(1.2); - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #396: 'text-align: left' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .text-align-left { - text-align: left; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #397: 'text-align: center' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .text-align-center { - text-align: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #398: 'text-align: right' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .text-align-right { - text-align: right; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #399: 'color-scheme' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (prefers-color-scheme: dark) { - :root { - color-scheme: light dark; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #400: 'filter' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (prefers-color-scheme: dark) { - img { - filter: brightness(0.8) contrast(1.2); - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #401: 'font-family: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- body { - font-family: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #402: 'font-family: "Oswald", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- h1, -h2, -h3, -h4, -h5 { - font-family: "Oswald", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #403: 'font-family: "Oswald", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .sub-header { - font-family: "Oswald", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #404: 'font-family: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .link-secondary, -a.link-secondary { - font-family: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #405: 'font-family: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- a, -.icon-link { - font-family: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #406: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .text-value-pairs { - justify-content: space-between; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #407: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .text-value-pairs { - align-items: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #408: 'row-gap' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .text-value-pairs { - row-gap: 8px; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #409: 'align-self: stretch' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .text-value-pairs { - align-self: stretch; -} -
- - -
- - -
-

- hint #410: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .text-value-pairs { - flex-wrap: wrap; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #411: 'text-align: left' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .text-align-left { - text-align: left; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #412: 'word-wrap' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .text-break { - word-wrap: break-word; -} -
- - -
- - -
-

- hint #413: 'position: sticky' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .toc.markdown-toc { - position: sticky; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #414: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .toc.markdown-toc ul { - flex-wrap: wrap; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #415: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .toc.markdown-toc ul { - justify-content: space-evenly; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #416: 'justify-content: space-evenly' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .toc.markdown-toc ul { - justify-content: space-evenly; -} -
- - -
- - -
-

- hint #417: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .toc.markdown-toc ul { - align-items: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #418: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media only screen and (max-width: 776px) { - .toc.markdown-toc ul { - justify-content: space-between; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #419: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- footer, -.footer { - align-items: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #420: 'gap' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- footer, -.footer { - gap: 16px; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #421: 'align-self: stretch' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- footer, -.footer { - align-self: stretch; -} -
- - -
- - -
-

- hint #422: 'font-family: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- sl-button::part(base) { - font-family: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #423: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- sl-button.card-button::part(base) { - justify-content: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #424: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .button-overlay { - flex-direction: column; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #425: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .button-overlay { - justify-content: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #426: 'background-position: top right' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .card-cover { - background-position: top right; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #427: 'fill' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .bi { - fill: currentcolor; -} -
- - -
- - -
-

- hint #428: 'background-position: center center' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .card-cover { - background-position: center center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #429: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .nav { - justify-content: space-between; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #430: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .nav { - align-items: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #431: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .nav-items { - justify-content: space-between; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #432: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .overview, -.account { - align-items: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #433: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .nav-icon { - justify-content: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #434: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (max-width: 776px) { - .nav-items { - flex-direction: column; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #435: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (max-width: 776px) { - .nav-items { - justify-content: space-evenly; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #436: 'justify-content: space-evenly' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (max-width: 776px) { - .nav-items { - justify-content: space-evenly; - } -} -
- - -
- - -
-

- hint #437: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @media (max-width: 776px) { - .overview, - .account { - flex-direction: column; - } -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #438: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .content { - flex-direction: column; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #439: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .overlay { - justify-content: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #440: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .overlay { - align-items: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #441: 'font-family: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .job { - font-family: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #442: 'align-self: stretch' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .job { - align-self: stretch; -} -
- - -
- - -
-

- hint #443: 'word-wrap' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .job { - word-wrap: break-word; -} -
- - -
- - -
-

- hint #444: 'font-family: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .column-list-item { - font-family: "Lato", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #445: 'align-self: stretch' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .column-list-item { - align-self: stretch; -} -
- - -
- - -
-

- hint #446: 'word-wrap' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- .column-list-item { - word-wrap: break-word; -} -
- - -
- - -
-

- hint #447: 'color-scheme' is not supported by Internet Explorer. -

- -

- - https://cdn.jsdelivr … 1/cdn/themes/dark.css - -

- - -
- :host, -.sl-theme-dark { - color-scheme: dark; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #448: 'inset-inline-end' is not supported by Internet Explorer. -

- -

- - https://cdn.jsdelivr … 1/cdn/themes/dark.css - -

- - -
- .sl-toast-stack { - inset-inline-end: 0; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #449: 'break-inside: avoid' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/print.css - -

- - -
- table, -img, -svg { - break-inside: avoid; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #450: 'break-before: always' is not supported by Chrome, Chrome Android, Edge, Internet Explorer, Opera, Safari, Safari on iOS, Samsung Internet. -

- -

- - http://localhost:8081/css/print.css - -

- - -
- h1, -.h1 { - break-before: always; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #451: 'text-align: left' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/css/print.css - -

- - -
- a:link, -a:visited, -a { - text-align: left; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #452: 'text-align: center' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- .fa-layers-counter, -.fa-layers-text { - text-align: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #453: 'text-align: center' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- .fa-layers { - text-align: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #454: 'text-align: center' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- .fa-fw { - text-align: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #455: 'text-align: center' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- .fa-li { - text-align: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #456: 'fill' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- .svg-inline--fa .fa-primary { - fill: var(--fa-primary-color,currentColor); -} -
- - -
- - -
-

- hint #457: 'fill' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- .svg-inline--fa .fa-secondary { - fill: var(--fa-secondary-color,currentColor); -} -
- - -
- - -
-

- hint #458: 'fill' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- .svg-inline--fa mask .fa-primary, -.svg-inline--fa mask .fa-secondary { - fill: #000; -} -
- - -
- - -
-

- hint #459: 'scroll-behavior' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- html { - scroll-behavior: smooth; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #460: 'font-family: "Oswald", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- body { - font-family: "Oswald", system-ui, -apple-system, blinkmacsystemfont, avenir next, avenir, segoe ui, sans-serif; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #461: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/ - -

- - -
- .section-block { - flex-direction: column; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #462: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/ - -

- - -
- .section-block { - justify-content: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #463: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/ - -

- - -
- .section-block { - align-items: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #464: 'background-position: center' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- .section-block { - background-position: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #465: 'flex-direction' is not supported by Internet Explorer < 11. Add '-ms-flex-direction' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/ - -

- - -
- .title-content { - flex-direction: column; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #466: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/ - -

- - -
- .title-content { - align-items: flex-start; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #467: 'gap' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- .title-content { - gap: .5rem; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #468: 'align-self: stretch' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- .title-content { - align-self: stretch; -} -
- - -
- - -
-

- hint #469: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/ - -

- - -
- .project-row { - align-items: center; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #470: 'gap' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- .project-row { - gap: 6rem; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #471: 'align-self: stretch' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- .project-row { - align-self: stretch; -} -
- - -
- - -
-

- hint #472: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/ - -

- - -
- .project-image { - flex: 1 0 0; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #473: 'object-fit' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- .project-image { - object-fit: contain; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #474: 'object-position' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- .project-image { - object-position: top; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #475: 'justify-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/ - -

- - -
- .footer { - justify-content: space-between; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #476: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/ - -

- - -
- .footer { - align-items: flex-start; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #477: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/ - -

- - -
- .footer { - align-content: flex-start; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #478: 'row-gap' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- .footer { - row-gap: 1rem; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #479: 'align-self: stretch' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- .footer { - align-self: stretch; -} -
- - -
- - -
-

- hint #480: 'flex-wrap' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/ - -

- - -
- .footer { - flex-wrap: wrap; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #481: 'view-timeline-name' is not supported by Firefox, Firefox for Android, Internet Explorer, Safari, Safari on iOS. -

- -

- - http://localhost:8081/ - -

- - -
- #projectRow { - view-timeline-name: --cards-element-scrolls-in-body; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #482: 'animation-timeline' is not supported by Firefox, Firefox for Android, Internet Explorer, Safari, Safari on iOS. -

- -

- - http://localhost:8081/ - -

- - -
- .project-row__content { - animation-timeline: --cards-element-scrolls-in-body; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #483: 'animation-range' is not supported by Firefox, Firefox for Android, Internet Explorer, Safari, Safari on iOS. -

- -

- - http://localhost:8081/ - -

- - -
- .project-row__content { - animation-range: exit-crossing var(--start-range) exit-crossing var(--end-range); -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #484: 'display: grid' is not supported by Internet Explorer. Add 'display: -ms-grid' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/ - -

- - -
- #projectRow { - display: grid; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #485: 'grid-template-columns' is not supported by Internet Explorer. Add '-ms-grid-columns' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/ - -

- - -
- #projectRow { - grid-template-columns: 1fr; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #486: 'grid-template-rows' is not supported by Internet Explorer. Add '-ms-grid-rows' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/ - -

- - -
- #projectRow { - grid-template-rows: repeat(var(--numcards), var(--card-height)); -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #487: 'gap' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- #projectRow { - gap: var(--card-margin); -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #488: 'position: sticky' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- .project-row { - position: sticky; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #489: 'flex' is not supported by Internet Explorer < 11. Add '-ms-flex' to support Internet Explorer 10+. -

- -

- - http://localhost:8081/ - -

- - -
- .project-row__content { - flex: 1 0 0; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #490: 'align-items' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/ - -

- - -
- .project-row__content { - align-items: stretch; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #491: 'align-content' is not supported by Internet Explorer < 11. -

- -

- - http://localhost:8081/ - -

- - -
- .project-row__content { - align-content: space-around; -} -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #492: 'will-change' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- .project-row__content { - will-change: transform; -} -
- - -
-

Further Reading

- -
- -
- - -
-
- - -
- compat-api/html: 6 hints -
- - - - -
-

- hint #1: 'link[sizes]' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"> -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #2: 'meta[name=theme-color]' is not supported by Firefox, Firefox for Android, Internet Explorer, Opera. -

- -

- - http://localhost:8081/ - -

- - -
- <meta name="theme-color" content="#ffffff"> -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #3: 'script[type=module]' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- <script type="module" src="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.19.1/cdn/shoelace-autoloader.js" crossorigin="anonymous"> -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #4: 'script[type=module]' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- <script type="module"> -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #5: 'script[type=module]' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- <script type="module" integrity="sha512-wrkvgnx5QU7sHMYYeiHDdgszjINLzfbt630xb2Xafqa4ecC0eTjvrzqUQ7+2HApa1AVvG+DKxhRbwJ0NmFaA4Q==" src="/.11ty/reload-client.js"> -
- - -
-

Further Reading

- -
- -
- - -
-

- hint #6: 'script[referrerpolicy]' is not supported by Internet Explorer. -

- -

- - http://localhost:8081/ - -

- - -
- <script referrerpolicy="strict-origin" id="fa-main" data-auto-a11y="true" data-auto-fetch-svg="" data-fetch-svg-from="https://ka-p.fontawesome.com/releases/v6.7.2/svgs" data-fetch-uploaded-svg-from="https://kit-uploads.fontawesome.com"> -
- - -
-

Further Reading

- -
- -
- - -
-
- - -
- highest-available-document-mode: 1 hints -
- - - - -
-

- hint #1: Response should include 'x-ua-compatible' header. -

- -

- - http://localhost:8081/ - -

- - - -
- - -
-
- - - -
- -
-
-

Performance

- - - - -
- - -
- detect-css-reflows/composite: 31 hints -
- - - - -
-

- hint #1: 'opacity' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @keyframes arrow { - 0% { - opacity: 0; - } -} -
- - -
- - -
-

- hint #2: 'opacity' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @keyframes arrow { - 40% { - opacity: 1; - } -} -
- - -
- - -
-

- hint #3: 'opacity' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @keyframes arrow { - 80% { - opacity: 0; - } -} -
- - -
- - -
-

- hint #4: 'opacity' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/css/style.css - -

- - -
- @keyframes arrow { - 100% { - opacity: 0; - } -} -
- - -
- - -
-

- hint #5: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-beat { - 0%, - 90% { - transform: scale(1); - } -} -
- - -
- - -
-

- hint #6: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-beat { - 45% { - transform: scale(var(--fa-beat-scale,1.25)); - } -} -
- - -
- - -
-

- hint #7: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-bounce { - 0% { - transform: scale(1,1) translateY(0); - } -} -
- - -
- - -
-

- hint #8: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-bounce { - 10% { - transform: scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0); - } -} -
- - -
- - -
-

- hint #9: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-bounce { - 30% { - transform: scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em)); - } -} -
- - -
- - -
-

- hint #10: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-bounce { - 50% { - transform: scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0); - } -} -
- - -
- - -
-

- hint #11: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-bounce { - 57% { - transform: scale(1,1) translateY(var(--fa-bounce-rebound,-.125em)); - } -} -
- - -
- - -
-

- hint #12: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-bounce { - 64% { - transform: scale(1,1) translateY(0); - } -} -
- - -
- - -
-

- hint #13: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-bounce { - 100% { - transform: scale(1,1) translateY(0); - } -} -
- - -
- - -
-

- hint #14: 'opacity' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-fade { - 50% { - opacity: var(--fa-fade-opacity,.4); - } -} -
- - -
- - -
-

- hint #15: 'opacity' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-beat-fade { - 0%, - 100% { - opacity: var(--fa-beat-fade-opacity,.4); - transform: scale(1); - } -} -
- - -
- - -
-

- hint #16: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-beat-fade { - 0%, - 100% { - opacity: var(--fa-beat-fade-opacity,.4); - transform: scale(1); - } -} -
- - -
- - -
-

- hint #17: 'opacity' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-beat-fade { - 50% { - opacity: 1; - transform: scale(var(--fa-beat-fade-scale,1.125)); - } -} -
- - -
- - -
-

- hint #18: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-beat-fade { - 50% { - opacity: 1; - transform: scale(var(--fa-beat-fade-scale,1.125)); - } -} -
- - -
- - -
-

- hint #19: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-flip { - 50% { - transform: rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg)); - } -} -
- - -
- - -
-

- hint #20: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-shake { - 0% { - transform: rotate(-15deg); - } -} -
- - -
- - -
-

- hint #21: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-shake { - 4% { - transform: rotate(15deg); - } -} -
- - -
- - -
-

- hint #22: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-shake { - 24%, - 8% { - transform: rotate(-18deg); - } -} -
- - -
- - -
-

- hint #23: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-shake { - 12%, - 28% { - transform: rotate(18deg); - } -} -
- - -
- - -
-

- hint #24: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-shake { - 16% { - transform: rotate(-22deg); - } -} -
- - -
- - -
-

- hint #25: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-shake { - 20% { - transform: rotate(22deg); - } -} -
- - -
- - -
-

- hint #26: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-shake { - 32% { - transform: rotate(-12deg); - } -} -
- - -
- - -
-

- hint #27: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-shake { - 36% { - transform: rotate(12deg); - } -} -
- - -
- - -
-

- hint #28: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-shake { - 100%, - 40% { - transform: rotate(0); - } -} -
- - -
- - -
-

- hint #29: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-spin { - 0% { - transform: rotate(0); - } -} -
- - -
- - -
-

- hint #30: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-spin { - 100% { - transform: rotate(360deg); - } -} -
- - -
- - -
-

- hint #31: 'transform' changes to this property will trigger: 'Composite', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes scale { - to { - transform: scale(calc(1.1 - calc(0.1 * var(--reverse-index)))); - } -} -
- - -
- - -
-
- - -
- detect-css-reflows/paint: 24 hints -
- - - - -
-

- hint #1: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-beat { - 0%, - 90% { - transform: scale(1); - } -} -
- - -
- - -
-

- hint #2: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-beat { - 45% { - transform: scale(var(--fa-beat-scale,1.25)); - } -} -
- - -
- - -
-

- hint #3: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-bounce { - 0% { - transform: scale(1,1) translateY(0); - } -} -
- - -
- - -
-

- hint #4: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-bounce { - 10% { - transform: scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0); - } -} -
- - -
- - -
-

- hint #5: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-bounce { - 30% { - transform: scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em)); - } -} -
- - -
- - -
-

- hint #6: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-bounce { - 50% { - transform: scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0); - } -} -
- - -
- - -
-

- hint #7: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-bounce { - 57% { - transform: scale(1,1) translateY(var(--fa-bounce-rebound,-.125em)); - } -} -
- - -
- - -
-

- hint #8: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-bounce { - 64% { - transform: scale(1,1) translateY(0); - } -} -
- - -
- - -
-

- hint #9: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-bounce { - 100% { - transform: scale(1,1) translateY(0); - } -} -
- - -
- - -
-

- hint #10: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-beat-fade { - 0%, - 100% { - opacity: var(--fa-beat-fade-opacity,.4); - transform: scale(1); - } -} -
- - -
- - -
-

- hint #11: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-beat-fade { - 50% { - opacity: 1; - transform: scale(var(--fa-beat-fade-scale,1.125)); - } -} -
- - -
- - -
-

- hint #12: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-flip { - 50% { - transform: rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg)); - } -} -
- - -
- - -
-

- hint #13: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-shake { - 0% { - transform: rotate(-15deg); - } -} -
- - -
- - -
-

- hint #14: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-shake { - 4% { - transform: rotate(15deg); - } -} -
- - -
- - -
-

- hint #15: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-shake { - 24%, - 8% { - transform: rotate(-18deg); - } -} -
- - -
- - -
-

- hint #16: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-shake { - 12%, - 28% { - transform: rotate(18deg); - } -} -
- - -
- - -
-

- hint #17: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-shake { - 16% { - transform: rotate(-22deg); - } -} -
- - -
- - -
-

- hint #18: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-shake { - 20% { - transform: rotate(22deg); - } -} -
- - -
- - -
-

- hint #19: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-shake { - 32% { - transform: rotate(-12deg); - } -} -
- - -
- - -
-

- hint #20: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-shake { - 36% { - transform: rotate(12deg); - } -} -
- - -
- - -
-

- hint #21: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-shake { - 100%, - 40% { - transform: rotate(0); - } -} -
- - -
- - -
-

- hint #22: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-spin { - 0% { - transform: rotate(0); - } -} -
- - -
- - -
-

- hint #23: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes fa-spin { - 100% { - transform: rotate(360deg); - } -} -
- - -
- - -
-

- hint #24: 'transform' changes to this property will trigger: 'Paint', which can impact performance when used inside @keyframes. -

- -

- - http://localhost:8081/ - -

- - -
- @keyframes scale { - to { - transform: scale(calc(1.1 - calc(0.1 * var(--reverse-index)))); - } -} -
- - -
- - -
-
- - - -
- -
-
-

Security

- - - - -
- - -
- sri: 5 hints -
- - - - -
-

- hint #1: Resource was requested without the 'integrity' attribute. -

- - -
- <link rel="stylesheet" crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.19.1/cdn/themes/dark.css" onload="document.documentElement.classList.add('sl-theme-dark');"> -
- - -
- - -
-

- hint #2: Resource was requested without the 'integrity' attribute. -

- - -
- <script type="module" src="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.19.1/cdn/shoelace-autoloader.js" crossorigin="anonymous"> -
- - -
- - -
-

- hint #3: Resource was requested without the 'integrity' attribute. -

- - -
- <link href="https://fonts.googleapis.com/css2?family=Fira+Mono:wght@400;500;700&amp;family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&amp;family=Oswald&amp;display=swap" rel="stylesheet" crossorigin="anonymous"> -
- - -
- - -
-

- hint #4: Resource was requested without the 'integrity' attribute. -

- - -
- <script async="" src="https://www.googletagmanager.com/gtag/js?id=G-XQCZPW3PZN" crossorigin="anonymous"> -
- - -
- - -
-

- hint #5: Resource was requested without the 'integrity' attribute. -

- - -
- <script src="https://kit.fontawesome.com/0ea2a7621c.js" crossorigin="anonymous"></script> -
- - -
- - -
-
- - - -
- -
-
-

Development

- -
- -
-
-

No issues

-
-
- - -
- - -
-
-
- -
- - - - - - - - - - - - - - - - - - - - diff --git a/package-lock.json b/package-lock.json index d4c625ce..3391b9e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,11 +11,15 @@ "dependencies": { "@11tyrocks/eleventy-plugin-emoji-readtime": "^1.0.1", "@shoelace-style/shoelace": "^2.20.1", - "bootstrap": "^5.3.6" + "beercss": "^3.11.17", + "clean-css": "^5.3.3", + "material-dynamic-colors": "^1.1.2", + "speedlify-score": "^4.0.4" }, "devDependencies": { "@11ty/eleventy": "^3.1.1", "@11ty/eleventy-activity-feed": "^2.0.0", + "@11ty/eleventy-cache-assets": "^2.3.0", "@11ty/eleventy-img": "^6.0.4", "@11ty/eleventy-navigation": "^1.0.4", "@11ty/eleventy-plugin-inclusive-language": "^1.0.3", @@ -31,6 +35,7 @@ "eleventy-plugin-toc": "^1.1.5", "emoji-regex": "^10.4.0", "hint": "^7.1.13", + "html-minifier-terser": "^7.2.0", "luxon": "^3.6.1", "markdown-it": "^14.1.0", "markdown-it-anchor": "^9.2.0", @@ -137,6 +142,28 @@ "url": "https://opencollective.com/11ty" } }, + "node_modules/@11ty/eleventy-cache-assets": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-cache-assets/-/eleventy-cache-assets-2.3.0.tgz", + "integrity": "sha512-W8tvO00GlWaKt3ccpEStaUBoj9BE3EgzuD8uYChCfYbN2Q4HkEItkiapvIJT0zJwAwoMfnSq6VHPLScYlX2XCg==", + "deprecated": "This package has been renamed to @11ty/eleventy-fetch.", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.1", + "flat-cache": "^3.0.4", + "node-fetch": "^2.6.1", + "p-queue": "^6.6.2", + "short-hash": "^1.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, "node_modules/@11ty/eleventy-dev-server": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/@11ty/eleventy-dev-server/-/eleventy-dev-server-2.0.8.tgz", @@ -2822,6 +2849,56 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.11.tgz", + "integrity": "sha512-C512c1ytBTio4MrpWKlJpyFHT6+qfFL8SZ58zBzJ1OOzUEjHeF1BtjY2fH7n4x/g2OV/KiiMLAivOp1DXmiMMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.9.tgz", + "integrity": "sha512-amBU75CKOOkcQLfyM6J+DnWwz41yTsWI7o8MQ003LwUIWb4NYX/evAblTx1oBBYJySqL/zHPxHXDw5ewpQaUFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.3.tgz", + "integrity": "sha512-AiR5uKpFxP3PjO4R19kQGIMwxyRyPuXmKEEy301V1C0+1rVjS94EZQXf1QKZYN8Q0YM+estSPhmx5JwNftv6nw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.28", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.28.tgz", + "integrity": "sha512-KNNHHwW3EIp4EDYOvYFGyIFfx36R2dNJYH4knnZlF8T5jdbD5Wx8xmSaQ2gP9URkJ04LGEtlcCtwArKcmFcwKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "node_modules/@keyv/serialize": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.3.tgz", @@ -2903,6 +2980,12 @@ "node-pre-gyp": "bin/node-pre-gyp" } }, + "node_modules/@material/material-color-utilities": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@material/material-color-utilities/-/material-color-utilities-0.2.7.tgz", + "integrity": "sha512-0FCeqG6WvK4/Cc06F/xXMd/pv4FeisI0c1tUpBbfhA2n9Y8eZEv4Karjbmf2ZqQCPUWMrGp8A571tCjizxoTiQ==", + "license": "Apache-2.0" + }, "node_modules/@mdn/browser-compat-data": { "version": "5.6.37", "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.6.37.tgz", @@ -3301,16 +3384,6 @@ "node": ">=14" } }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, "node_modules/@prettier/sync": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/@prettier/sync/-/sync-0.5.5.tgz", @@ -4232,6 +4305,15 @@ "node": ">=0.10" } }, + "node_modules/beercss": { + "version": "3.11.17", + "resolved": "https://registry.npmjs.org/beercss/-/beercss-3.11.17.tgz", + "integrity": "sha512-ZpZE5xeYY0XWxGFUNqk+tUE9U/3mgHvd3IdZZ/gB3GLjqOoRqJEFVesH+H6R1U0NIbMZtT5+yWSPfF9nAXy8Og==", + "license": "MIT", + "dependencies": { + "material-dynamic-colors": "^1.1.2" + } + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -4261,25 +4343,6 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, - "node_modules/bootstrap": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.6.tgz", - "integrity": "sha512-jX0GAcRzvdwISuvArXn3m7KZscWWFAf1MKBcnzaN02qWMb3jpMoUX4/qgeiGzqyIb4ojulRzs89UCUmGcFSzTA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/twbs" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" - } - ], - "license": "MIT", - "peerDependencies": { - "@popperjs/core": "^2.11.8" - } - }, "node_modules/boxen": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", @@ -4417,6 +4480,13 @@ "node": "*" } }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, "node_modules/cacache": { "version": "17.1.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", @@ -4592,6 +4662,24 @@ "node": ">=6" } }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camel-case/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, "node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -4874,6 +4962,18 @@ "node": ">=8" } }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -5047,6 +5147,16 @@ "node": ">= 0.8" } }, + "node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/composed-offset-position": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/composed-offset-position/-/composed-offset-position-0.0.6.tgz", @@ -5889,6 +5999,24 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-case/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, "node_modules/dot-prop": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", @@ -7192,6 +7320,13 @@ "node": ">=8" } }, + "node_modules/hash-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hash-string/-/hash-string-1.0.0.tgz", + "integrity": "sha512-dtNNyxXobzHavayZwOwRWhBTqS9GX4jDjIMsGc0fDyaN2A+4zMn5Ua9ODDCggN6w3Spma6mAHL3ImmW3BkWDmQ==", + "dev": true, + "license": "ISC" + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -7337,6 +7472,28 @@ "node": ">=12" } }, + "node_modules/html-minifier-terser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", + "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "~5.3.2", + "commander": "^10.0.0", + "entities": "^4.4.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.15.1" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + } + }, "node_modules/html-tags": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", @@ -8575,16 +8732,6 @@ "url": "https://opencollective.com/liquidjs" } }, - "node_modules/liquidjs/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, "node_modules/list-to-array": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/list-to-array/-/list-to-array-1.1.0.tgz", @@ -8714,6 +8861,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lower-case/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, "node_modules/lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -8935,6 +9099,18 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/material-dynamic-colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/material-dynamic-colors/-/material-dynamic-colors-1.1.2.tgz", + "integrity": "sha512-8KD0jrPTFs2x06UJWbvkg6E0HyzFjrvS5oOc2DsXzIEOqZTbb3ruLMUhNuPSl8WeHA/O/RTAlTLcxqYXJzYwPA==", + "license": "MIT", + "dependencies": { + "@material/material-color-utilities": "^0.2.7" + }, + "bin": { + "material-dynamic-colors": "cli.js" + } + }, "node_modules/mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", @@ -9392,6 +9568,24 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/no-case/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, "node_modules/node-addon-api": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", @@ -10290,6 +10484,24 @@ "semver": "bin/semver.js" } }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/param-case/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -10387,6 +10599,24 @@ "node": ">= 0.8" } }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/pascal-case/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -11853,6 +12083,16 @@ "node": ">=8" } }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -12293,6 +12533,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/short-hash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/short-hash/-/short-hash-1.0.0.tgz", + "integrity": "sha512-qbUCD2Pkl4IXRyVqneEjGnUr0NGDGLzZnBUVGJngIQZf/FrhOL0yJhH+JQzak0t8xMmScIKpoX1SxOsPHdwa4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-string": "^1.0.0" + } + }, "node_modules/side-channel": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", @@ -12479,8 +12729,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, "engines": { "node": ">=0.10.0" } @@ -12495,6 +12743,17 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -12527,6 +12786,12 @@ "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", "dev": true }, + "node_modules/speedlify-score": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/speedlify-score/-/speedlify-score-4.0.4.tgz", + "integrity": "sha512-uaTcU/CDACE3hTOpGtAcxvQzcBPtMrDDnkpwKJAv2Zll02TSt5Gf4mu0iIq8JPJcKQQlZ8CZu2vP6OAqdtSCaA==", + "license": "MIT" + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -13427,6 +13692,32 @@ "node": ">=10" } }, + "node_modules/terser": { + "version": "5.43.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", + "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.14.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", diff --git a/package.json b/package.json index a8dfce52..2701327b 100644 --- a/package.json +++ b/package.json @@ -14,19 +14,21 @@ "webhint": "hint http://localhost:8081", "stylelint": "npx stylelint '**/*.scss'", "stylelint:fix": "npx stylelint --fix `src/sass/style.scss`", - "shoelace": "cp -R node_modules/@shoelace-style/shoelace/dist/ src/shoelace/", + "cp-shoelace": "cp -R node_modules/@shoelace-style/shoelace/dist/ src/shoelace/", "watch:sass": "sass --no-source-map --watch src/sass:docs/css", "watch:eleventy": "eleventy --serve --port=8081", "build:sass-nomap": "sass --no-source-map src/sass/style.scss docs/css/style.css", + "build:print": "sass --no-source-map src/sass/print.scss docs/css/print.min.css", "build:sass-site": "sass src/sass/style.scss docs/css/style.css", - "build:sass": "npm-run-all --parallel build:sass-site", + "build:sass": "npm-run-all --parallel build:sass-site build:print", "build:eleventy": "eleventy", "postbuild": "postcss docs/css/*.css -u autoprefixer cssnano -r", "start": "cross-env ELEVENTY_ENV=dev npm-run-all build:sass --parallel watch:*", "build": "cross-env ELEVENTY_ENV=prod npm-run-all build:sass build:eleventy", "lint": "stylelint 'src/sass/*.scss' 'src/sass/*.scss' 'src/sass/*.scss'", "lint:fix": "stylelint --fix 'src/sass/*.scss' 'src/sass/*.scss' 'src/sass/*.scss'", - "bump": "npm --no-git-tag-version version" + "bump": "npm --no-git-tag-version version", + "cp-speedlify": "cp node_modules/speedlify-score/speedlify-score.js src/js/" }, "repository": { "type": "git", @@ -39,6 +41,7 @@ "devDependencies": { "@11ty/eleventy": "^3.1.1", "@11ty/eleventy-activity-feed": "^2.0.0", + "@11ty/eleventy-cache-assets": "^2.3.0", "@11ty/eleventy-img": "^6.0.4", "@11ty/eleventy-navigation": "^1.0.4", "@11ty/eleventy-plugin-inclusive-language": "^1.0.3", @@ -54,6 +57,7 @@ "eleventy-plugin-toc": "^1.1.5", "emoji-regex": "^10.4.0", "hint": "^7.1.13", + "html-minifier-terser": "^7.2.0", "luxon": "^3.6.1", "markdown-it": "^14.1.0", "markdown-it-anchor": "^9.2.0", @@ -73,6 +77,9 @@ "dependencies": { "@11tyrocks/eleventy-plugin-emoji-readtime": "^1.0.1", "@shoelace-style/shoelace": "^2.20.1", - "bootstrap": "^5.3.6" + "beercss": "^3.11.17", + "clean-css": "^5.3.3", + "material-dynamic-colors": "^1.1.2", + "speedlify-score": "^4.0.4" } } diff --git a/social/pages.json b/social/pages.json index 1c5bf257..bc82d294 100644 --- a/social/pages.json +++ b/social/pages.json @@ -11,12 +11,6 @@ "date":"stream-deck-examples" }, - { - "title":"Adam Jolicoeur", - "imgName":"home", - "date":"home" - }, - { "title":"Archived", "imgName":"archived", @@ -29,30 +23,6 @@ "date":"journeys" }, - { - "title":"Archived Pages", - "imgName":"archived-pages", - "date":"archived-pages" - }, - - { - "title":"Designs", - "imgName":"designs", - "date":"designs" - }, - - { - "title":"Application Lifecycle Management", - "imgName":"application-lifecycle-management", - "date":"application-lifecycle-management" - }, - - { - "title":"Customer Engagement App", - "imgName":"customer-engagement-app", - "date":"customer-engagement-app" - }, - { "title":"District 25 website", "imgName":"district-25-website", @@ -89,12 +59,6 @@ "date":"icons-and-branding" }, - { - "title":"Icons", - "imgName":"icons", - "date":"icons" - }, - { "title":"Presentations", "imgName":"presentations", @@ -102,69 +66,69 @@ }, { - "title":"Color Picker", - "imgName":"color-picker", - "date":"color-picker" + "title":"Marketing", + "imgName":"marketing", + "date":"marketing" }, { - "title":"Portfolio", - "imgName":"portfolio", - "date":"portfolio" + "title":"Apps", + "imgName":"apps", + "date":"apps" }, { - "title":"Testimonials", - "imgName":"testimonials", - "date":"testimonials" + "title":"Contact", + "imgName":"contact", + "date":"contact" }, { - "title":"Task-It!", - "imgName":"task-it", - "date":"task-it" + "title":"Collect Some More", + "imgName":"collect-some-more", + "date":"collect-some-more" }, { - "title":"howto", - "imgName":"howto", - "date":"howto" + "title":"Privacy Policy", + "imgName":"privacy-policy", + "date":"privacy-policy" }, { - "title":"Marketing", - "imgName":"marketing", - "date":"marketing" + "title":"CollectSomeMore Releases", + "imgName":"collectsomemore-releases", + "date":"collectsomemore-releases" }, { - "title":"Connect", - "imgName":"connect", - "date":"connect" + "title":"Support", + "imgName":"support", + "date":"support" }, { - "title":"Oops! Not Found", - "imgName":"oops-not-found", - "date":"oops-not-found" + "title":"Color Picker", + "imgName":"color-picker", + "date":"color-picker" }, { - "title":"About", - "imgName":"about", - "date":"about" + "title":"Portfolio", + "imgName":"portfolio", + "date":"portfolio" }, { - "title":"Apps", - "imgName":"apps", - "date":"apps" + "title":"Testimonials", + "imgName":"testimonials", + "date":"testimonials" }, { - "title":"Credits", - "imgName":"credits", - "date":"credits" + "title":"About", + "imgName":"about", + "date":"about" }, { @@ -174,56 +138,56 @@ }, { - "title":"Uses", - "imgName":"uses", - "date":"uses" + "title":"Connect", + "imgName":"connect", + "date":"connect" }, { - "title":"Contact", - "imgName":"contact", - "date":"contact" + "title":"Credits", + "imgName":"credits", + "date":"credits" }, { - "title":"Collect Some More", - "imgName":"collect-some-more", - "date":"collect-some-more" + "title":"Uses", + "imgName":"uses", + "date":"uses" }, { - "title":"Privacy Policy", - "imgName":"privacy-policy", - "date":"privacy-policy" + "title":"Designs", + "imgName":"designs", + "date":"designs" }, { - "title":"CollectSomeMore Releases", - "imgName":"collectsomemore-releases", - "date":"collectsomemore-releases" + "title":"Development", + "imgName":"development", + "date":"development" }, { - "title":"Support", - "imgName":"support", - "date":"support" + "title":"Application Lifecycle Management", + "imgName":"application-lifecycle-management", + "date":"application-lifecycle-management" }, { - "title":"Development", - "imgName":"development", - "date":"development" + "title":"Customer Engagement App", + "imgName":"customer-engagement-app", + "date":"customer-engagement-app" }, { - "title":"Reference links", - "imgName":"reference-links", - "date":"reference-links" + "title":"Task-It!", + "imgName":"task-it", + "date":"task-it" }, { - "title":"Alfred Workflows", - "imgName":"alfred-workflows", - "date":"alfred-workflows" + "title":"Oops! Not Found", + "imgName":"oops-not-found", + "date":"oops-not-found" } ] diff --git a/social/template.html b/social/template.html index 39761b26..6bcbd57c 100644 --- a/social/template.html +++ b/social/template.html @@ -1,37 +1 @@ - - - - - - - - - - - - - - AdamJolicoeur.com - - - - - - - - -
-
-

-

- Published on  Adam Jolicoeur -

-
-
- - +AdamJolicoeur.com

Published on  Adam Jolicoeur

\ No newline at end of file diff --git a/src/404.html b/src/404.html index e7bebe66..0ebc8ef3 100644 --- a/src/404.html +++ b/src/404.html @@ -24,22 +24,11 @@ - - - - - + + + + + - - - -
-
-
- Lost in the mountains + {% include 'sitenav.njk' %} +
+
+
+ Lost in the mountains +
Looks like you lost your way...
+

Go back to the home page by clicking the button below.

+
+
-

Looks like you lost your way...

-

Go back to the home page by clicking the button below.

- Take me home -
+
- - + + diff --git a/src/_includes/base.njk b/src/_includes/base.njk index bc205263..a48a5f67 100644 --- a/src/_includes/base.njk +++ b/src/_includes/base.njk @@ -6,7 +6,7 @@ - + {{pageTitle}} @@ -33,23 +33,6 @@ - - - - - - - + + + + + + + {# {% set css %} {% include "site.css" %} {% endset %} + #} - - - - - - {#
#} - {% include 'sitenav.njk' %} - {{ content | safe }} - {% include 'footer.njk' %} - + + + {% include 'sitenav.njk' %} +
+
+ {{ content | safe }} +
+
+ {% include 'footer.njk' %} - {#
#} diff --git a/src/_includes/blog.njk b/src/_includes/blog.njk index c9816cdf..570465e5 100644 --- a/src/_includes/blog.njk +++ b/src/_includes/blog.njk @@ -47,7 +47,7 @@ y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); })(window, document, "clarity", "script", "qgxupe8qx2"); - + - - - Back - -
- + +
{{ content | safe }} diff --git a/src/_includes/embedded.njk b/src/_includes/embedded.njk index 76fbd1a8..086aca31 100644 --- a/src/_includes/embedded.njk +++ b/src/_includes/embedded.njk @@ -49,7 +49,7 @@ onload="document.documentElement.classList.add('sl-theme-dark');" /> - + - + - - + + + + + + - + diff --git a/src/_includes/home.njk b/src/_includes/home.njk index 7bc604a9..a14a9d75 100644 --- a/src/_includes/home.njk +++ b/src/_includes/home.njk @@ -2,316 +2,206 @@ layout : base.njk templateEngineOverride : md, njk --- - -
-
-
-
-

Hi! I’m Adam, a Product Designer creating data-driven enterprise experiences.

-

My solutions help users traverse technical information with minimal friction.

-
- - Resume - +
+
+
+
+
+
+

Hi!

+

I'm Adam, a Product Manager and Designer creating data-driven experiences.

+ +
+
+
+
+
+
+
+ Avatar thumbnail +
-
- - - - - - - +
+
+
+
+
+

Recent Work

+
+
+
+
+
+ Thumbnail of the CAS design system cover page +
+

Design System

+

Component Assembly Systems

+
+
+
+
+
CAS Design
+

As the lead designer at Component Assembly System, one of the top priorities was to create a design system that all of the internal projects.

+ +
+
+
+
+
+
+
+
+
+ Thumbnail of task tracker +
+

Task Tracker

+

AWS

+
+
+
+
+
Task-It!
+

As part of the software builder team, I was responsible for designing the next-generation task management system for internal ASBX users.

+ +
+
+
+
-
-
-

Recent Projects

+
+
+
+ +
+
+ +
+
+
-
-
-
-
-

Task-It!

-

Innovative work management system with clear presentation and project customization, growing from a dozen users to 500 daily in 18 months.

- - - Experience the Journey - +
+
+
+
+
+

Currently on GitHub

+
+
+
+
+ Site logo +
+

AdamJ.GitHub.io

+

Where this website lives - take a look around.

- Task-It! thumbnail
-
-
-
-
-

Application Lifecycle Management

-

Creating a single source for team planning, cutting delivery time through simplified project management.

- - - Experience the Journey - +
+
+
+
+ Game Tracker logo +
+

Game Tracker

+

My first attempt at a PWA - Vite, Shoelace, and Lit.

- Application Lifecycle Management thumbnail
-
-
-
-
-

Customer Engagement

-

Informing users how best to reach their customers, improving engagement rates by 10%.

- - - Experience the Journey - +
+
+
+
+ Blog logo +
+

Blog

+

A simple blog, found at blog.adamjolicoeur.com.

- Customer Engagement App Dashboard thumbnail
-
-
-
-
-

Presentations

-

Standardizing how information is shared, improving communication and driving efficiency.

- - - Follow along - +
+
+
+
+ MTG app logo +
+

My MTG App

+

For 1v1 games of MTG with Scryfall integration.

- A thumbnail of the first slide in the presentation
-
+
-
+
+
diff --git a/src/_includes/home_old.njk b/src/_includes/home_old.njk deleted file mode 100644 index 4e4ba222..00000000 --- a/src/_includes/home_old.njk +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout : base.njk -templateEngineOverride : md, njk ---- - -
-

Adam J. Jolicoeur

-

- I'm a driven and passionate UX designer, specializing in data-intensive designs. -

-
- - -
-
-
- Application Lifecycle Management thumbnail -
-
-

Task-It!

-

One enterprise task management system to rule them all.

- the journey -
-
-
- - -
-
-
-

Application Lifecycle Management

-

A one-stop-shop for a team's planning and project lifecycle management.

- the journey -
-
- Application Lifecycle Management thumbnail -
-
-
diff --git a/src/_includes/markdown.njk b/src/_includes/markdown.njk index bdb1e0bc..1a7a762c 100644 --- a/src/_includes/markdown.njk +++ b/src/_includes/markdown.njk @@ -2,38 +2,41 @@ layout: base.njk --- -
-

{{ title }}

-

- {{ description }} -

- {%- if (headerButton) -%} - {{ primaryAction }} - {# {{ primaryAction }} #} - {%- else -%}{%- endif -%} -
- - -
-
-
- {%- if (tocBlock) -%} - {%- if content | toc -%} - - {{ content | toc | safe }} - - {%- else -%} - {%- endif -%} - {%- else -%} - {%- endif -%} - {{ content | safe }} -
- -
+
+
+

{{ title }}

+
+ {{ description }} +
+ {%- if (headerButton) -%} +
+ + + +
+ {%- else -%}{%- endif -%}
- +
+ + +
+ {%- if (tocBlock) -%} + {%- if content | toc -%} + + {%- else -%} + {%- endif -%} + {%- else -%} + {%- endif -%} +
+ {{ content | safe }} +
+
diff --git a/src/_includes/page.njk b/src/_includes/page.njk index a98b07fb..7b458926 100644 --- a/src/_includes/page.njk +++ b/src/_includes/page.njk @@ -2,16 +2,16 @@ layout: base.njk --- -
-

{{ title }}

-

- {{ description }} -

+
+

{{ title }}

+
{{ description }}
{%- if (headerButton) -%} - {{ primaryAction }} + + + {%- else -%}{%- endif -%} -
+ +
+ +{{ content | safe }} - - {{ content | safe }} - diff --git a/src/_includes/print.css b/src/_includes/print.css new file mode 100644 index 00000000..e01d9c92 --- /dev/null +++ b/src/_includes/print.css @@ -0,0 +1,180 @@ +@charset "utf-8"; + +/** + ** Print stylesheet for Resume + ** Copyright 2008-2024 Adam J. Jolicoeur + ** https://www.adamjolicoeur.com +**/ + +body { + font: 12pt 'Times New Roman', Times, serif; + line-height: 1.3; + background: #fff !important; + color: #000; +} +header, +footer, +aside, +nav, +form, +iframe, +.menu, +.hero, +.adslot { + display: none; +} +#navigation, +#footer { + display: none !important; +} +main, +content { + display: block !important; + max-width: 8.5in !important; + width: 100%; + margin: 0; + float: none; +} +article { + box-shadow: none !important; +} +.row { + display: block !important; +} +.col-md-6 { + width: 100% !important; +} +.mt-4, .mt-3, .mt-2 { + margin-top: 2pt !important; +} +.mb-4, .mb-3, .mb-2 { + margin-bottom: 2pt !important; +} +.my-4, .my-3, .my-2 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} +.py-4, .py-3, .py-2 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} +.pb-4, .pb-3, .pb-2 { + padding-bottom: 2pt !important; +} +* { + background-image: none !important; +} +img, +svg { + display: none !important; +} +table, +img, +svg { + break-inside: avoid; +} +.large-space, +.medium-space, +.small-space { + display: none !important; +} +.text-bg-light { + background-color: transparent !important; +} +.row-badges { + display: none !important; +} +.hide-on-print { + display: none !important; +} +.print { + display: block !important; +} +h1, +.h1 { + font-size: 22pt; + break-before: always; +} +h2, +.h2 { + font-size: 19pt; + margin-top: 16px; + margin-bottom: 8px; +} +h3, +.h3 { + font-size: 17pt; + margin-top: 16px; + margin-bottom: 8px; +} +h4, +.h4 { + font-size: 14pt; + margin-top: 16px; + margin-bottom: 8px; +} +h5, +.h5 { + font-size: 12pt; + margin-top: 16px; + margin-bottom: 8px; +} +p, +.paragraph { + font-size: 12pt; + margin-bottom: 8px; +} + +/* Defining all page breaks */ +a { + page-break-inside: avoid; +} +blockquote { + page-break-inside: avoid; +} +h1, +h2, +h3, +h4, +h5, +h6 { + page-break-after: avoid; + page-break-inside: avoid; +} +img { + page-break-inside: avoid; + page-break-after: avoid; +} +table, +pre { + page-break-inside: avoid; +} +ul, +ol, +dl { + page-break-before: avoid; +} + +/* Displaying link color and link behavior */ +a, +a:link, +a:visited { + background: transparent; + color: #520; + font-weight: bold; + text-decoration: underline; + text-align: left; + page-break-inside: avoid; +} +a[href^='http']::after { + content: ' < ' attr(href) '> '; +} +a::after > img { + content: ''; +} +article a[href^='#']::after { + content: ''; +} +a:not(:local-link)::after { + content: ' < ' attr(href) '> '; +} diff --git a/src/_includes/sitenav.njk b/src/_includes/sitenav.njk index 415cb57b..e7c061ec 100644 --- a/src/_includes/sitenav.njk +++ b/src/_includes/sitenav.njk @@ -1,73 +1,53 @@ - - - + + diff --git a/src/css/beer.min.css b/src/css/beer.min.css new file mode 100644 index 00000000..d1d892f9 --- /dev/null +++ b/src/css/beer.min.css @@ -0,0 +1 @@ +:root{--size: 1rem;--font: Inter, Roboto, "Helvetica Neue", "Arial Nova", "Nimbus Sans", Noto Sans, Arial, sans-serif;--font-icon: "Material Symbols Outlined";--speed1: .1s;--speed2: .2s;--speed3: .3s;--speed4: .4s;--active: rgb(128 128 128 / .192);--overlay: rgb(0 0 0 / .5);--elevate1: 0 .125rem .125rem 0 rgb(0 0 0 / .32);--elevate2: 0 .25rem .5rem 0 rgb(0 0 0 / .4);--elevate3: 0 .375rem .75rem 0 rgb(0 0 0 / .48);--top: env(safe-area-inset-top);--bottom: env(safe-area-inset-bottom);--left: env(safe-area-inset-left);--right: env(safe-area-inset-right)}:root,body.light{--primary: #6750a4;--on-primary: #ffffff;--primary-container: #e9ddff;--on-primary-container: #22005d;--secondary: #625b71;--on-secondary: #ffffff;--secondary-container: #e8def8;--on-secondary-container: #1e192b;--tertiary: #7e5260;--on-tertiary: #ffffff;--tertiary-container: #ffd9e3;--on-tertiary-container: #31101d;--error: #ba1a1a;--on-error: #ffffff;--error-container: #ffdad6;--on-error-container: #410002;--background: #fffbff;--on-background: #1c1b1e;--surface: #fdf8fd;--on-surface: #1c1b1e;--surface-variant: #e7e0eb;--on-surface-variant: #49454e;--outline: #7a757f;--outline-variant: #cac4cf;--shadow: #000000;--scrim: #000000;--inverse-surface: #313033;--inverse-on-surface: #f4eff4;--inverse-primary: #cfbcff;--surface-dim: #ddd8dd;--surface-bright: #fdf8fd;--surface-container-lowest: #ffffff;--surface-container-low: #f7f2f7;--surface-container: #f2ecf1;--surface-container-high: #ece7eb;--surface-container-highest: #e6e1e6}body.dark{--primary: #cfbcff;--on-primary: #381e72;--primary-container: #4f378a;--on-primary-container: #e9ddff;--secondary: #cbc2db;--on-secondary: #332d41;--secondary-container: #4a4458;--on-secondary-container: #e8def8;--tertiary: #efb8c8;--on-tertiary: #4a2532;--tertiary-container: #633b48;--on-tertiary-container: #ffd9e3;--error: #ffb4ab;--on-error: #690005;--error-container: #93000a;--on-error-container: #ffb4ab;--background: #1c1b1e;--on-background: #e6e1e6;--surface: #141316;--on-surface: #e6e1e6;--surface-variant: #49454e;--on-surface-variant: #cac4cf;--outline: #948f99;--outline-variant: #49454e;--shadow: #000000;--scrim: #000000;--inverse-surface: #e6e1e6;--inverse-on-surface: #313033;--inverse-primary: #6750a4;--surface-dim: #141316;--surface-bright: #3a383c;--surface-container-lowest: #0f0e11;--surface-container-low: #1c1b1e;--surface-container: #201f22;--surface-container-high: #2b292d;--surface-container-highest: #363438}@font-face{font-family:Material Symbols Outlined;font-style:normal;font-weight:400;font-display:block;src:url(material-symbols-outlined.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/beercss@3.11.17/dist/cdn/material-symbols-outlined.woff2) format("woff2")}@font-face{font-family:Material Symbols Rounded;font-style:normal;font-weight:400;font-display:block;src:url(material-symbols-rounded.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/beercss@3.11.17/dist/cdn/material-symbols-rounded.woff2) format("woff2")}@font-face{font-family:Material Symbols Sharp;font-style:normal;font-weight:400;font-display:block;src:url(material-symbols-sharp.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/beercss@3.11.17/dist/cdn/material-symbols-sharp.woff2) format("woff2")}@font-face{font-family:Material Symbols Subset;font-style:normal;font-weight:400;font-display:block;src:url(material-symbols-subset.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/beercss@3.11.17/dist/cdn/material-symbols-subset.woff2) format("woff2")}*{-webkit-tap-highlight-color:transparent;position:relative;vertical-align:middle;color:inherit;margin:0;padding:0;border-radius:inherit;box-sizing:border-box}*:after,*:before{pointer-events:none}body{color:var(--on-surface);background-color:var(--surface);overflow-x:hidden}label{font-size:.75rem;vertical-align:baseline}a,b,i,span,strong,em,code{vertical-align:baseline}a,button,.button{cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;border:none;font-family:inherit;outline:inherit;justify-content:center}a,button,.button,i,label{-webkit-user-select:none;user-select:none}body ::-webkit-scrollbar,body ::-webkit-scrollbar-thumb,body ::-webkit-scrollbar-button{background:none;inline-size:.4rem;block-size:.4rem}body :is(:hover,:focus)::-webkit-scrollbar-thumb{background:var(--outline);border-radius:1rem}*+:is(address,article,blockquote,code,.field,fieldset,form,.grid,h1,h2,h3,h4,h5,h6,nav,ol,p,pre,.row,section,aside,table,.tabs,ul){margin-block-start:1rem}:is(a,button,.button,.chip):focus-visible{outline:.125rem solid var(--primary);outline-offset:.25rem}:is(nav,.row,li).group>:focus-visible{z-index:1}.transparent{background-color:transparent!important;box-shadow:none!important;color:inherit!important}.primary{background-color:var(--primary)!important;color:var(--on-primary)!important}.primary-text{color:var(--primary)!important}.primary-border{border-color:var(--primary)!important}.primary-container{background-color:var(--primary-container)!important;color:var(--on-primary-container)!important}.secondary{background-color:var(--secondary)!important;color:var(--on-secondary)!important}.secondary-text{color:var(--secondary)!important}.secondary-border{border-color:var(--secondary)!important}.secondary-container{background-color:var(--secondary-container)!important;color:var(--on-secondary-container)!important}.tertiary{background-color:var(--tertiary)!important;color:var(--on-tertiary)!important}.tertiary-text{color:var(--tertiary)!important}.tertiary-border{border-color:var(--tertiary)!important}.tertiary-container{background-color:var(--tertiary-container)!important;color:var(--on-tertiary-container)!important}.error{background-color:var(--error)!important;color:var(--on-error)!important}.error-text{color:var(--error)!important}.error-border{border-color:var(--error)!important}.error-container{background-color:var(--error-container)!important;color:var(--on-error-container)!important}.background{background-color:var(--background)!important;color:var(--on-background)!important}.surface,.surface-dim,.surface-bright,.surface-container-lowest,.surface-container-low,.surface-container,.surface-container-high,.surface-container-highest{background-color:var(--surface)!important;color:var(--on-surface)!important}.surface-variant{background-color:var(--surface-variant)!important;color:var(--on-surface-variant)!important}.inverse-surface{background-color:var(--inverse-surface);color:var(--inverse-on-surface)}.inverse-primary{background-color:var(--inverse-primary);color:var(--primary)}.inverse-primary-text{color:var(--inverse-primary)!important}.inverse-primary-border{border-color:var(--inverse-primary)!important}.surface-dim{background-color:var(--surface-dim)!important}.surface-bright{background-color:var(--surface-bright)!important}.surface-container-lowest{background-color:var(--surface-container-lowest)!important}.surface-container{background-color:var(--surface-container)!important}.surface-container-high{background-color:var(--surface-container-high)!important}.surface-container-highest{background-color:var(--surface-container-highest)!important}.surface-container-low{background-color:var(--surface-container-low)!important}.black{background-color:#000!important}.black-border{border-color:#000!important}.black-text{color:#000!important}.white{background-color:#fff!important}.white-border{border-color:#fff!important}.white-text{color:#fff!important}.transparent-border{border-color:transparent!important}.transparent-text{color:transparent!important}.fill:not(i){background-color:var(--surface-variant)!important;color:var(--on-surface-variant)!important}.middle-align{display:flex;align-items:center!important}.bottom-align{display:flex;align-items:flex-end!important}.top-align{display:flex;align-items:flex-start!important}.left-align{text-align:start;justify-content:flex-start!important}.right-align{text-align:end;justify-content:flex-end!important}.center-align{text-align:center;justify-content:center!important}[class*=blur],[class*=blur].light{--_blur: 1rem;-webkit-backdrop-filter:blur(var(--_blur));backdrop-filter:blur(var(--_blur));color:var(--on-surface);background-color:#ffffff80!important}.dark [class*=blur],[class*=blur].dark{background-color:#00000080!important}.small-blur{--_blur: .5rem}.large-blur{--_blur: 1.5rem}.red,.red6{background-color:#f44336!important}.red-border{border-color:#f44336!important}.red-text{color:#f44336!important}.red1{background-color:#ffebee!important}.red2{background-color:#ffcdd2!important}.red3{background-color:#ef9a9a!important}.red4{background-color:#e57373!important}.red5{background-color:#ef5350!important}.red7{background-color:#e53935!important}.red8{background-color:#d32f2f!important}.red9{background-color:#c62828!important}.red10{background-color:#b71c1c!important}.pink,.pink6{background-color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-text{color:#e91e63!important}.pink1{background-color:#fce4ec!important}.pink2{background-color:#f8bbd0!important}.pink3{background-color:#f48fb1!important}.pink4{background-color:#f06292!important}.pink5{background-color:#ec407a!important}.pink7{background-color:#d81b60!important}.pink8{background-color:#c2185b!important}.pink9{background-color:#ad1457!important}.pink10{background-color:#880e4f!important}.purple,.purple6{background-color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-text{color:#9c27b0!important}.purple1{background-color:#f3e5f5!important}.purple2{background-color:#e1bee7!important}.purple3{background-color:#ce93d8!important}.purple4{background-color:#ba68c8!important}.purple5{background-color:#ab47bc!important}.purple7{background-color:#8e24aa!important}.purple8{background-color:#7b1fa2!important}.purple9{background-color:#6a1b9a!important}.purple10{background-color:#4a148c!important}.deep-purple,.deep-purple6{background-color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-text{color:#673ab7!important}.deep-purple1{background-color:#ede7f6!important}.deep-purple2{background-color:#d1c4e9!important}.deep-purple3{background-color:#b39ddb!important}.deep-purple4{background-color:#9575cd!important}.deep-purple5{background-color:#7e57c2!important}.deep-purple7{background-color:#5e35b1!important}.deep-purple8{background-color:#512da8!important}.deep-purple9{background-color:#4527a0!important}.deep-purple10{background-color:#311b92!important}.indigo,.indigo6{background-color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-text{color:#3f51b5!important}.indigo1{background-color:#e8eaf6!important}.indigo2{background-color:#c5cae9!important}.indigo3{background-color:#9fa8da!important}.indigo4{background-color:#7986cb!important}.indigo5{background-color:#5c6bc0!important}.indigo7{background-color:#3949ab!important}.indigo8{background-color:#303f9f!important}.indigo9{background-color:#283593!important}.indigo10{background-color:#1a237e!important}.blue,.blue6{background-color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-text{color:#2196f3!important}.blue1{background-color:#e3f2fd!important}.blue2{background-color:#bbdefb!important}.blue3{background-color:#90caf9!important}.blue4{background-color:#64b5f6!important}.blue5{background-color:#42a5f5!important}.blue7{background-color:#1e88e5!important}.blue8{background-color:#1976d2!important}.blue9{background-color:#1565c0!important}.blue10{background-color:#0d47a1!important}.light-blue,.light-blue6{background-color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-text{color:#03a9f4!important}.light-blue1{background-color:#e1f5fe!important}.light-blue2{background-color:#b3e5fc!important}.light-blue3{background-color:#81d4fa!important}.light-blue4{background-color:#4fc3f7!important}.light-blue5{background-color:#29b6f6!important}.light-blue7{background-color:#039be5!important}.light-blue8{background-color:#0288d1!important}.light-blue9{background-color:#0277bd!important}.light-blue10{background-color:#01579b!important}.cyan,.cyan6{background-color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-text{color:#00bcd4!important}.cyan1{background-color:#e0f7fa!important}.cyan2{background-color:#b2ebf2!important}.cyan3{background-color:#80deea!important}.cyan4{background-color:#4dd0e1!important}.cyan5{background-color:#26c6da!important}.cyan7{background-color:#00acc1!important}.cyan8{background-color:#0097a7!important}.cyan9{background-color:#00838f!important}.cyan10{background-color:#006064!important}.teal,.teal6{background-color:#009688!important}.teal-border{border-color:#009688!important}.teal-text{color:#009688!important}.teal1{background-color:#e0f2f1!important}.teal2{background-color:#b2dfdb!important}.teal3{background-color:#80cbc4!important}.teal4{background-color:#4db6ac!important}.teal5{background-color:#26a69a!important}.teal7{background-color:#00897b!important}.teal8{background-color:#00796b!important}.teal9{background-color:#00695c!important}.teal10{background-color:#004d40!important}.green,.green6{background-color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-text{color:#4caf50!important}.green1{background-color:#e8f5e9!important}.green2{background-color:#c8e6c9!important}.green3{background-color:#a5d6a7!important}.green4{background-color:#81c784!important}.green5{background-color:#66bb6a!important}.green7{background-color:#43a047!important}.green8{background-color:#388e3c!important}.green9{background-color:#2e7d32!important}.green10{background-color:#1b5e20!important}.light-green,.light-green6{background-color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-text{color:#8bc34a!important}.light-green1{background-color:#f1f8e9!important}.light-green2{background-color:#dcedc8!important}.light-green3{background-color:#c5e1a5!important}.light-green4{background-color:#aed581!important}.light-green5{background-color:#9ccc65!important}.light-green7{background-color:#7cb342!important}.light-green8{background-color:#689f38!important}.light-green9{background-color:#558b2f!important}.light-green10{background-color:#33691e!important}.lime,.lime6{background-color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-text{color:#cddc39!important}.lime1{background-color:#f9fbe7!important}.lime2{background-color:#f0f4c3!important}.lime3{background-color:#e6ee9c!important}.lime4{background-color:#dce775!important}.lime5{background-color:#d4e157!important}.lime7{background-color:#c0ca33!important}.lime8{background-color:#afb42b!important}.lime9{background-color:#9e9d24!important}.lime10{background-color:#827717!important}.yellow,.yellow6{background-color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-text{color:#ffeb3b!important}.yellow1{background-color:#fffde7!important}.yellow2{background-color:#fff9c4!important}.yellow3{background-color:#fff59d!important}.yellow4{background-color:#fff176!important}.yellow5{background-color:#ffee58!important}.yellow7{background-color:#fdd835!important}.yellow8{background-color:#fbc02d!important}.yellow9{background-color:#f9a825!important}.yellow10{background-color:#f57f17!important}.amber,.amber6{background-color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-text{color:#ffc107!important}.amber1{background-color:#fff8e1!important}.amber2{background-color:#ffecb3!important}.amber3{background-color:#ffe082!important}.amber4{background-color:#ffd54f!important}.amber5{background-color:#ffca28!important}.amber7{background-color:#ffb300!important}.amber8{background-color:#ffa000!important}.amber9{background-color:#ff8f00!important}.amber10{background-color:#ff6f00!important}.orange,.orange6{background-color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-text{color:#ff9800!important}.orange1{background-color:#fff3e0!important}.orange2{background-color:#ffe0b2!important}.orange3{background-color:#ffcc80!important}.orange4{background-color:#ffb74d!important}.orange5{background-color:#ffa726!important}.orange7{background-color:#fb8c00!important}.orange8{background-color:#f57c00!important}.orange9{background-color:#ef6c00!important}.orange10{background-color:#e65100!important}.deep-orange,.deep-orange6{background-color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-text{color:#ff5722!important}.deep-orange1{background-color:#fbe9e7!important}.deep-orange2{background-color:#ffccbc!important}.deep-orange3{background-color:#ffab91!important}.deep-orange4{background-color:#ff8a65!important}.deep-orange5{background-color:#ff7043!important}.deep-orange7{background-color:#f4511e!important}.deep-orange8{background-color:#e64a19!important}.deep-orange9{background-color:#d84315!important}.deep-orange10{background-color:#bf360c!important}.brown,.brown6{background-color:#795548!important}.brown-border{border-color:#795548!important}.brown-text{color:#795548!important}.brown1{background-color:#efebe9!important}.brown2{background-color:#d7ccc8!important}.brown3{background-color:#bcaaa4!important}.brown4{background-color:#a1887f!important}.brown5{background-color:#8d6e63!important}.brown7{background-color:#6d4c41!important}.brown8{background-color:#5d4037!important}.brown9{background-color:#4e342e!important}.brown10{background-color:#3e2723!important}.blue-grey,.blue-grey6{background-color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-text{color:#607d8b!important}.blue-grey1{background-color:#eceff1!important}.blue-grey2{background-color:#cfd8dc!important}.blue-grey3{background-color:#b0bec5!important}.blue-grey4{background-color:#90a4ae!important}.blue-grey5{background-color:#78909c!important}.blue-grey7{background-color:#546e7a!important}.blue-grey8{background-color:#455a64!important}.blue-grey9{background-color:#37474f!important}.blue-grey10{background-color:#263238!important}.grey,.grey6{background-color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-text{color:#9e9e9e!important}.grey1{background-color:#fafafa!important}.grey2{background-color:#f5f5f5!important}.grey3{background-color:#eee!important}.grey4{background-color:#e0e0e0!important}.grey5{background-color:#bdbdbd!important}.grey7{background-color:#757575!important}.grey8{background-color:#616161!important}.grey9{background-color:#424242!important}.grey10{background-color:#212121!important}.horizontal{display:inline-flex;flex-direction:row!important;gap:1rem;inline-size:auto!important;max-inline-size:none!important}.horizontal>*{margin-block:0!important}.vertical{display:flex;flex-direction:column!important}:is(a,button,.button,.chip).vertical{display:inline-flex;gap:.25rem;block-size:auto!important;max-block-size:none!important;padding-block:.5rem}.vertical>*{margin-inline:0!important}.no-elevate{box-shadow:none!important}.small-elevate,.elevate{box-shadow:var(--elevate1)!important}.medium-elevate{box-shadow:var(--elevate2)!important}.large-elevate{box-shadow:var(--elevate3)!important}[class*=round]{--_round: 2rem;border-radius:var(--_round)!important}.small-round{--_round: .5rem}.large-round{--_round: 3.5rem}.no-round,.square,.top-round,.bottom-round,.left-round,.right-round{border-radius:.5rem!important}.top-round{border-start-start-radius:var(--_round)!important;border-start-end-radius:var(--_round)!important}.bottom-round{border-end-end-radius:var(--_round)!important;border-end-start-radius:var(--_round)!important}.left-round{border-start-start-radius:var(--_round)!important;border-end-start-radius:var(--_round)!important}.right-round{border-start-end-radius:var(--_round)!important;border-end-end-radius:var(--_round)!important}.circle:not(.extend){border-radius:50%}:is(.circle,.square):is(button,.button,.chip){padding:0;block-size:var(--_size);inline-size:var(--_size)}:is(.circle,.square)>span{display:none}:is(.circle,.square).round{border-radius:1rem!important}.border:not(table,.field,.list,menu,article){box-sizing:border-box;border:.0625rem solid var(--outline);background-color:transparent;box-shadow:none}.no-border{border-color:transparent!important}.border:not(.extend,.circle,.square,.badge){box-sizing:content-box}[class*=margin]:not(.left-margin,.right-margin,.top-margin,.bottom-margin,.horizontal-margin,.vertical-margin){margin:var(--_margin)!important}[class*=margin]{--_margin: 1rem}.no-margin{--_margin: 0}.auto-margin{--_margin: auto}.tiny-margin{--_margin: .25rem}.small-margin{--_margin: .5rem}.large-margin{--_margin: 1.5rem}.left-margin,.horizontal-margin{margin-inline-start:var(--_margin)!important}.right-margin,.horizontal-margin{margin-inline-end:var(--_margin)!important}.top-margin,.vertical-margin{margin-block-start:var(--_margin)!important}.bottom-margin,.vertical-margin{margin-block-end:var(--_margin)!important}.no-opacity{opacity:1!important}.opacity{opacity:0!important}.small-opacity{opacity:.75!important}.medium-opacity{opacity:.5!important}.large-opacity{opacity:.25!important}[class*=padding]:not(.left-padding,.right-padding,.top-padding,.bottom-padding,.horizontal-padding,.vertical-padding){padding:var(--_padding)!important}[class*=padding]{--_padding: 1rem}.no-padding{--_padding: 0 !important}.tiny-padding{--_padding: .25rem !important}.small-padding{--_padding: .5rem !important}.large-padding{--_padding: 1.5rem !important}.left-padding,.horizontal-padding{padding-inline-start:var(--_padding)!important}.right-padding,.horizontal-padding{padding-inline-end:var(--_padding)!important}.top-padding,.vertical-padding{padding-block-start:var(--_padding)!important}.bottom-padding,.vertical-padding{padding-block-end:var(--_padding)!important}.front{z-index:10!important}.back{z-index:-10!important}.left{inset-inline-start:0}.right{inset-inline-end:0}.top{inset-block-start:0}.bottom{inset-block-end:0}.center{inset-inline-start:50%;transform:translate(-50%)}[dir=rtl] .center{transform:translate(50%)}.middle{inset-block-start:50%;transform:translateY(-50%)}.middle.center{transform:translate(-50%,-50%)}[dir=rtl] .middle.center{transform:translate(50%,-50%)}.ripple{--_duration: .6s}.fast-ripple{--_duration: .2s}.slow-ripple{--_duration: 1.8s}.ripple-js{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.ripple-js>div{position:absolute;border-radius:50%;background:currentColor;opacity:.3;transform:scale(0);animation:to-ripple var(--_duration) linear}@keyframes to-ripple{to{transform:scale(4);opacity:0}}.scroll{overflow:auto}.no-scroll{overflow:hidden}.shadow{background-color:#00000050}:is(.left-shadow,.right-shadow,.top-shadow,.bottom-shadow){background-color:transparent!important}.left-shadow{background-image:linear-gradient(to right,black,transparent)!important}.right-shadow{background-image:linear-gradient(to left,black,transparent)!important}.bottom-shadow{background-image:linear-gradient(to top,black,transparent)!important}.top-shadow{background-image:linear-gradient(to bottom,black,transparent)!important}[class*=width]{max-inline-size:100%}.auto-width{inline-size:auto}.small-width{inline-size:12rem!important}.medium-width{inline-size:24rem!important}.large-width{inline-size:36rem!important}.auto-height{block-size:auto}.small-height{block-size:12rem!important}.medium-height{block-size:24rem!important}.large-height{block-size:36rem!important}.wrap{display:block;white-space:normal}.no-wrap:not(menu){display:flex;white-space:nowrap}.tiny-space:not(nav,.row,.grid,table,.tooltip,.list,menu,.shape){block-size:.5rem}:is(.space,.small-space):not(nav,.row,.grid,table,.tooltip,.list,menu,.shape){block-size:1rem}.medium-space:not(nav,.row,.grid,table,.tooltip,.list,menu,.shape){block-size:2rem}.large-space:not(nav,.row,.grid,table,.tooltip,.list,menu,.shape){block-size:3rem}.extra-space:not(nav,.row,.grid,table,.tooltip,.list,menu,.shape){block-size:4rem}.responsive{inline-size:-webkit-fill-available;inline-size:-moz-available}@media only screen and (max-width: 600px){:is(.m,.l):not(.s){display:none!important}}@media only screen and (min-width: 601px) and (max-width: 992px){:is(.s,.l):not(.m){display:none!important}}@media only screen and (min-width: 993px){:is(.m,.s):not(.l){display:none!important}}html{font-size:var(--size)}body{font-family:var(--font);font-size:.875rem;line-height:1.5rem;letter-spacing:.0313rem}h1,h2,h3,h4,h5,h6{font-weight:400;display:block;align-items:center;line-height:normal}h1{font-size:3.5625rem}h2{font-size:2.8125rem}h3{font-size:2.25rem}h4{font-size:2rem}h5{font-size:1.75rem}h6{font-size:1.5rem}h1.small{font-size:3.0625rem}h2.small{font-size:2.3125rem}h3.small{font-size:1.75rem}h4.small{font-size:1.5rem}h5.small{font-size:1.25rem}h6.small{font-size:1rem}h1.large{font-size:4.0625rem}h2.large{font-size:3.3125rem}h3.large{font-size:2.75rem}h4.large{font-size:2.5rem}h5.large{font-size:2.25rem}h6.large{font-size:2rem}.link{color:var(--primary)!important}.inverse-link{color:var(--inverse-primary)!important}.truncate{overflow:hidden;white-space:nowrap!important;text-overflow:ellipsis;flex:inherit}.truncate>*{white-space:nowrap!important}.small-text{font-size:.75rem}.medium-text{font-size:.875rem}.large-text{font-size:1rem}.upper{text-transform:uppercase}.lower{text-transform:lowercase}.capitalize{text-transform:capitalize}.bold{font-weight:700}.overline{text-decoration:line-through}.underline{text-decoration:underline}.italic{font-style:italic}p{margin:.5rem 0}.no-line{line-height:normal}.tiny-line{line-height:1.25rem}.small-line{line-height:1.5rem}.medium-line{line-height:1.75rem}.large-line{line-height:2rem}.extra-line{line-height:2.25rem}pre{border-radius:0;background-color:var(--surface-container);white-space:pre-wrap;padding:1rem;border-inline-start:.25rem solid var(--primary);font-family:inherit}blockquote{border-radius:0;padding:1rem;border-inline-start:.25rem solid var(--primary);font-family:inherit}code{border-radius:0;background-color:var(--surface-container);white-space:pre-wrap;padding:.25rem}pre>code,blockquote>code{padding:0}.scroll>code{white-space:pre}pre:has(>code){direction:ltr;text-align:start}:is(.wave,.chip,.button,button,nav.tabbed>a,.tabs>a,nav.toolbar>a):not(.slow-ripple,.ripple,.fast-ripple):after,nav:is(.left,.right,.bottom,.top).max>a:after,nav:is(.left,.right,.bottom,.top).max>:is(ol,ul)>li>a:after,nav:is(.left,.right,.bottom,.top):not(.max)>a>i:after,nav:is(.left,.right,.bottom,.top):not(.max)>:is(ol,ul)>li>a>i:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;border-radius:inherit;inline-size:100%;block-size:100%;background-position:center;background-image:radial-gradient(circle,currentColor 1%,transparent 1%);opacity:0;transition:none}:is(.wave,.chip,.button,button,nav.tabbed>a,.tabs>a,nav.toolbar>a):not(.slow-ripple,.ripple,.fast-ripple):is(:focus-visible,:hover):after,nav:is(.left,.right,.bottom,.top).max>a:not(.button,.chip):is(:focus-visible,:hover):after,nav:is(.left,.right,.bottom,.top).max>:is(ol,ul)>li>a:not(.button,.chip):is(:focus-visible,:hover):after,nav:is(.left,.right,.bottom,.top):not(.max)>a:not(.button,.chip):is(:focus-visible,:hover)>i:after,nav:is(.left,.right,.bottom,.top):not(.max)>:is(ol,ul)>li>a:not(.button,.chip):is(:focus-visible,:hover)>i:after{background-size:15000%;opacity:.1;transition:background-size var(--speed2) linear}:is(.wave,.chip,.button,button,nav.tabbed>a,.tabs>a,nav.toolbar>a,nav.max>a):not(.slow-ripple,.ripple,.fast-ripple):active:after,nav:is(.left,.right,.bottom,.top).max>a:active:after,nav:is(.left,.right,.bottom,.top).max>:is(ol,ul)>li>a:active:after,nav:is(.left,.right,.bottom,.top):not(.max)>a:active>i:after,nav:is(.left,.right,.bottom,.top):not(.max)>:is(ol,ul)>li>a:active>i:after{background-size:5000%;opacity:0;transition:none}.no-wave:after,.no-wave:is(:hover,:active):after{display:none}.zoom,.tiny-zoom{zoom:2}.small-zoom{zoom:3}.medium-zoom{zoom:4}.large-zoom{zoom:5}.extra-zoom{zoom:6}.badge{--_x: 0;--_y: -100%;display:inline-flex;align-items:center;justify-content:center;position:absolute;font-size:.6875rem;text-transform:none;z-index:2;padding:0 .25rem;min-block-size:1rem;min-inline-size:1rem;background-color:var(--error);color:var(--on-error);line-height:normal;border-radius:1rem;inset:50% auto auto 50%;transform:translate(var(--_x, 50%),var(--_y, -50%));font-family:var(--font)}.badge.top{--_y: -100%}.badge.bottom{--_y: 0}.badge.left{--_x: -100%}.badge.right{--_x: 0}.badge.border{border-color:var(--error);color:var(--error);background-color:var(--surface)}.badge:is(.circle,.square){text-align:center;inline-size:auto;block-size:auto;padding:0 .25rem;border-radius:1rem}.badge.square{border-radius:0}.badge.min>*{display:none}.badge.min{clip-path:circle(18.75% at 50% 50%)}nav:is(.left,.right,.top,.bottom)>a>.badge,nav:is(.left,.right,.top,.bottom)>:is(ol,ul)>li>a>.badge{inset:1rem auto auto 50%}.badge.none{inset:auto!important;transform:none;position:relative;margin:0 .125rem}:is(button,.button,.chip)>.badge.none{margin:0 -.5rem}header,footer{display:flex;justify-content:center;flex-direction:column;border-radius:0;padding:0 1rem}:is(dialog,article)>:is(header,footer){padding-inline:0;top:0;right:0;bottom:0;left:0}header{min-block-size:4rem}footer{min-block-size:5rem}:is(header,footer,menu>*).fixed{position:sticky;top:0;right:0;bottom:0;left:0;z-index:11;background-color:inherit}header.fixed{inset:calc(-1 * var(--_padding)) 0 0 0;margin-block-start:calc(-1 * var(--_padding))}footer.fixed{inset:0 0 calc(-1 * var(--_padding)) 0;margin-block-end:calc(-1 * var(--_padding))}:is(header,footer).fixed.min{margin-inline:auto}dialog>:is(header,footer){background:none}dialog>:is(header,footer).fixed{background-color:inherit}:is(main,header,footer,section).responsive{max-inline-size:75rem;margin:0 auto}:is(main,header,footer,section).responsive.max{max-inline-size:none}:has(>main)>:is(header,footer).fixed{transform:none;box-sizing:content-box;position:sticky;top:0;right:0;bottom:0;left:0;z-index:12}:is(nav,.row)>header{background-color:inherit}.button,button{--_padding: 1rem;--_size: 2.5rem;box-sizing:content-box;display:inline-flex;align-items:center;justify-content:center;block-size:var(--_size);font-size:.875rem;font-weight:500;color:var(--on-primary);padding:0 var(--_padding);background-color:var(--primary);margin:0 .5rem;border-radius:var(--_size);transition:transform var(--speed3),border-radius var(--speed2),padding var(--speed3);-webkit-user-select:none;user-select:none;gap:.5rem;line-height:normal}:is(button,.button).small{--_size: 2rem;--_padding: .75rem}:is(button,.button).large{--_size: 3rem;--_padding: 1.25rem}:is(.button,button):is(.extra,.extend){--_size: 3.5rem;font-size:1rem;--_padding: 1.5rem}:is(button,.button):is(.square,.circle){--_padding: 0}:is(button,.button).border{border-color:var(--outline-variant);color:var(--primary)}.extend>span{display:none}.extend:is(:hover,.active){inline-size:auto;--_padding: 1.5rem;padding:0 var(--_padding)}.extend:is(:hover,.active)>i+span{display:inherit;margin-inline-start:var(--_padding)}.extend:is(:hover,.active)>:is(img,svg)+span{display:inherit;margin-inline-start:calc(1rem + var(--_padding))}:is(.button,button)[disabled]{opacity:.5;cursor:not-allowed}.button[disabled]{pointer-events:none}:is(.button,button)[disabled]:before,:is(.button,button)[disabled]:after{display:none}:is(.button,button):not(.chip,.extend).fill{background-color:var(--secondary-container)!important;color:var(--on-secondary-container)!important}:is(.button,button):not(.chip,.extend).active{background-color:var(--primary-container);color:var(--on-primary-container)}:is(.button,button):not(.chip,.extend).fill.active{background-color:var(--secondary)!important;color:var(--on-secondary)!important}:is(.button,button):not(.chip,.extend).border.active{background-color:var(--inverse-surface)!important;color:var(--inverse-on-surface)!important;border-color:var(--inverse-surface)!important}:is(.button,button):not(.chip):active,:is(.button,button):not(.chip).active{border-radius:.5rem!important}article{--_padding: 1rem;box-shadow:var(--elevate1);background-color:var(--surface-container-low);color:var(--on-surface);padding:var(--_padding);border-radius:.75rem;display:block;transition:transform var(--speed3),border-radius var(--speed3),padding var(--speed3)}article.small{block-size:12rem}article.medium{block-size:20rem}article.large{block-size:32rem}article.border{box-shadow:none;border:.0625rem solid var(--outline-variant)}.chip{--_padding: .75rem;--_size: 2rem;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;block-size:var(--_size);min-inline-size:var(--_size);font-size:.875rem;font-weight:500;background-color:transparent;border:.0625rem solid var(--outline-variant);color:var(--on-surface-variant);padding:0 var(--_padding);margin:0 .5rem;text-transform:none;border-radius:.5rem;transition:transform var(--speed3),border-radius var(--speed3),padding var(--speed3);-webkit-user-select:none;user-select:none;gap:.5rem;line-height:normal;letter-spacing:normal}.chip.medium{--_size: 2.5rem;--_padding: 1rem}.chip.large{--_padding: 1.25rem;--_size: 3rem}.chip.fill{border:none}dialog{--_padding: 1.5rem;display:block;visibility:hidden;border:none;opacity:0;position:fixed;box-shadow:var(--elevate2);color:var(--on-surface);background-color:var(--surface-container-high);padding:var(--_padding);z-index:100;inset:10% auto auto 50%;min-inline-size:20rem;max-inline-size:100%;max-block-size:80%;overflow-x:hidden;overflow-y:auto;transition:all var(--speed3),0s background-color;border-radius:1.75rem;transform:translate(-50%,-4rem);outline:none}dialog.small{inline-size:25%;block-size:25%}dialog.medium{inline-size:50%;block-size:50%}dialog.large{inline-size:75%;block-size:75%}dialog:is(.active,[open]){visibility:visible;opacity:1;transform:translate(-50%)}dialog:popover-open{visibility:visible;opacity:1;transform:translate(-50%)}dialog:is(.top,.right,.bottom,.left,.max){--_padding: 1rem}dialog:is(.top,.bottom){opacity:1;block-size:auto;inline-size:100%;min-inline-size:auto;max-block-size:100%}dialog.top{inset:0 auto auto 0;transform:translateY(-100%);border-radius:0 0 1rem 1rem;padding-block-end:var(--_padding)}dialog.bottom{inset:auto auto 0 0;transform:translateY(100%);border-radius:1rem 1rem 0 0}dialog:is(.left,.right){opacity:1;inset:0 auto auto 0;inline-size:auto;block-size:100%;max-block-size:100%;background-color:var(--surface)}[dir=rtl] dialog.right,dialog.left{inset:0 auto auto 0;border-radius:0 1rem 1rem 0;transform:translate(-100%)}[dir=rtl] dialog.left,dialog.right{inset:0 0 auto auto;border-radius:1rem 0 0 1rem;transform:translate(100%)}dialog.max{inset:0 auto auto 0;inline-size:100%;block-size:100%;max-inline-size:100%;max-block-size:100%;transform:translateY(4rem);background-color:var(--surface);border-radius:0}dialog:is(.active,[open]):is(.left,.right,.top,.bottom,.max){transform:translate(0)}dialog:popover-open:is(.left,.right,.top,.bottom,.max){transform:translate(0)}dialog.small:is(.left,.right){inline-size:20rem}dialog.medium:is(.left,.right){inline-size:32rem}dialog.large:is(.left,.right){inline-size:44rem}dialog.small:is(.top,.bottom){block-size:16rem}dialog.medium:is(.top,.bottom){block-size:24rem}dialog.large:is(.top,.bottom){block-size:32rem}hr,[class*=divider]{all:unset;inline-size:-webkit-fill-available;min-block-size:auto;block-size:.0625rem;background-color:var(--outline-variant);display:block}hr+*,[class*=divider]+*{margin:0!important}hr.medium,.medium-divider{margin:1rem 0!important}hr.large,.large-divider{margin:1.5rem 0!important}hr.small,.small-divider{margin:.5rem 0!important}li:has(>hr),li:has(>.divider){padding:0!important;align-self:normal!important;min-inline-size:auto!important;min-block-size:auto!important;inline-size:-webkit-fill-available}hr.vertical,.divider.vertical,li:has(>hr.vertical),li:has(>.divider.vertical){padding:0!important;align-self:center!important;min-inline-size:auto;min-block-size:1.5rem;inline-size:.0625rem}summary,summary:focus{list-style-type:none;cursor:pointer;outline:none}summary::-webkit-details-marker{display:none}.field{--_size: 3rem;--_start: 1.2rem;block-size:var(--_size);margin-block-end:2rem;border-radius:.25rem .25rem 0 0}.grid>*>.field{margin-block-end:1rem}.grid>*>.field+.field{margin-block-start:2rem}.grid.no-space>*>.field+.field{margin-block-start:1rem}.grid.medium-space>*>.field+.field{margin-block-start:2.5rem}.grid.large-space>*>.field+.field{margin-block-start:3rem}.field.small{--_size: 2.5rem;--_start: 1rem}.field.large{--_size: 3.5rem;--_start: 1.4rem}.field.extra{--_size: 4rem;--_start: 1.6rem}.field.border{border-radius:.25rem}.field.round.small{border-radius:1.25rem}.field.round{border-radius:1.5rem}.field.round.large{border-radius:1.75rem}.field.round.extra{border-radius:2rem}.field>:is(i,img,svg,progress,a:not(.helper,.error)){position:absolute;inset:50% auto auto auto;transform:translateY(-50%);cursor:pointer;z-index:0;inline-size:1.5rem;block-size:1.5rem}.field>:is(i,img,svg,progress,a:not(.helper,.error)),[dir=rtl] .field>:is(i,img,svg,progress,a:not(.helper,.error)):first-child{inset:50% 1rem auto auto}.field>:is(i,img,svg,progress,a:not(.helper,.error)):first-child,[dir=rtl] .field>:is(i,img,svg,progress,a:not(.helper,.error)){inset:50% auto auto 1rem}.field.invalid>i{color:var(--error)}.field>progress.circle{inset-block-start:calc(50% - .75rem)!important;border-width:.1875rem}.field>a:not(.helper,.error){z-index:10}.field>a>:is(i,img,svg,progress,a:not(.helper,.error)){inline-size:1.5rem;block-size:1.5rem}.field>:is(input,textarea,select){all:unset;position:relative;display:flex;align-items:center;box-sizing:border-box;border-radius:inherit;border:.0625rem solid transparent;padding:0 .9375rem;font-family:inherit;font-size:1rem;inline-size:100%;block-size:100%;outline:none;z-index:1;background:none;resize:none;text-align:start;cursor:text}input::-webkit-date-and-time-value{text-align:start}:is(input,select,textarea):is(:-webkit-autofill,:autofill){-webkit-background-clip:text;-webkit-text-fill-color:var(--on-surface)}.field>:is(input,textarea,select):focus{border:.125rem solid transparent;padding:0 .875rem}.field.min>textarea{overflow:hidden;position:absolute;top:0;right:0;bottom:0;left:0;max-block-size:12rem}input[type=file],input[type=color],:not(.field)>input[type^=date],:not(.field)>input[type^=time],input::-webkit-calendar-picker-indicator{opacity:0;position:absolute;top:0;right:0;bottom:0;left:0;inline-size:100%;block-size:100%;margin:0;padding:0;border:0;outline:0;z-index:2!important}input::-webkit-search-decoration,input::-webkit-search-cancel-button,input::-webkit-search-results-button,input::-webkit-search-results-decoration,input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{display:none}input[type=number]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.field.border>:is(input,textarea,select){border-color:var(--outline)}.field.border>:is(input,textarea,select):focus{border-color:var(--primary)}.field.round>:is(input,textarea,select){padding-inline:1.4376rem}.field.round>:is(input,textarea,select):focus{padding-inline:1.375rem}.field.prefix>:is(input,textarea,select){padding-inline-start:2.9375rem}.field.prefix>.slider{margin-inline-start:3.5rem}.field.prefix>:is(input,textarea,select):focus{padding-inline-start:2.875rem}.field.suffix>:is(input,textarea,select){padding-inline-end:2.9375rem}.field.suffix>.slider{margin-inline-end:3.5rem}.field.suffix>:is(input,textarea,select):focus{padding-inline-end:2.875rem}.field:not(.border,.round)>:is(input,textarea,select){border-block-end-color:var(--outline)}.field:not(.border,.round)>:is(input,textarea,select):focus{border-block-end-color:var(--primary)}.field.round:not(.border,.fill)>:is(input,textarea,select),.field.round:not(.border)>:is(input,textarea,select):focus{box-shadow:var(--elevate1)}.field.round:not(.border,.fill)>:is(input,textarea,select):focus{box-shadow:var(--elevate2)}.field.invalid:not(.border,.round)>:is(input,textarea,select),.field.invalid:not(.border,.round)>:is(input,textarea,select):focus{border-block-end-color:var(--error)}.field.invalid.border>:is(input,textarea,select),.field.invalid.border>:is(input,textarea,select):focus{border-color:var(--error)}.field:has(>:disabled){opacity:.5;cursor:not-allowed}.field>:disabled{cursor:not-allowed}.field.textarea.small:not(.min){--_size: 5rem}.field.textarea:not(.min){--_size: 5.5rem}.field.textarea.large:not(.min){--_size: 6rem}.field.textarea.extra:not(.min){--_size: 6.5rem}.field>select{-webkit-user-select:none;user-select:none}.field>select>option{background-color:var(--surface-container);color:var(--on-surface)}.field.label>:is(input,select){padding-block-start:1rem}.field.label.border:not(.fill)>:is(input,select){padding-block-start:0}.field>textarea{padding-block-start:var(--_start);white-space:pre-wrap;overflow-wrap:break-word}.field>textarea:focus{padding-block-start:calc(var(--_start) - .06rem)}.field:not(.label)>textarea,.field.border.label:not(.fill)>textarea{padding-block-start:calc(var(--_start) - .5rem)}.field:not(.label)>textarea:focus,.field.border.label:not(.fill)>textarea:focus{padding-block-start:calc(var(--_start) - .56rem)}.field.label>label{position:absolute;inset:-.5rem auto auto 1rem;display:flex;inline-size:calc(100% - 5rem);block-size:calc(var(--_size) + 1rem);line-height:calc(var(--_size) + 1rem);font-size:1rem;transition:all .2s;gap:.25rem;white-space:nowrap}.field.label.textarea:not(.min)>label{block-size:calc(var(--_size) - 1.5rem);line-height:calc(var(--_size) - 1.5rem)}[dir=rtl] .field.label>label{inset:-.5rem 1rem auto auto}.field.label.border.prefix:not(.fill)>:is(label.active,:focus+label,[placeholder]:not(:placeholder-shown)+label,select+label){inset-inline-start:1rem}.field.label.round>label,.field.label.border.prefix.round:not(.fill)>:is(label.active,:focus+label,[placeholder]:not(:placeholder-shown)+label,select+label){inset-inline-start:1.5rem}.field.label.prefix>label{inset-inline-start:3rem}.field.label>:is(label.active,:focus+label,[placeholder]:not(:placeholder-shown)+label,select+label){block-size:2.5rem;line-height:2.5rem;font-size:.75rem}.field.label.border:not(.fill)>:is(label.active,:focus+label,[placeholder]:not(:placeholder-shown)+label,select+label){block-size:1rem;line-height:1rem}.field.label.border:not(.fill)>label:after{content:"";display:block;margin-block-start:.5rem;border-block-start:.0625rem solid var(--outline);block-size:1rem;transition:none;flex:auto}.field.label.border:not(.fill)>:focus+label:after{border-block-start:.125rem solid var(--primary)}.field.label.border:not(.fill)>:is(input,textarea):is(:focus,[placeholder]:not(:placeholder-shown),.active),.field.label.border:not(.fill)>select{clip-path:polygon(-2% -2%,.75rem -2%,.75rem .5rem,calc(100% - 5rem) .5rem,calc(100% - 5rem) -2%,102% -2%,102% 102%,-2% 102%)}[dir=rtl] .field.label.border:not(.fill)>:is(input,textarea):is(:focus,[placeholder]:not(:placeholder-shown),.active),[dir=rtl] .field.label.border:not(.fill)>select{clip-path:polygon(-2% -2%,5rem -2%,5rem .5rem,calc(100% - .75rem) .5rem,calc(100% - .75rem) -2%,102% -2%,102% 102%,-2% 102%)}.field.label.border.round:not(.fill)>:is(input,textarea):is(:focus,[placeholder]:not(:placeholder-shown),.active),.field.label.border.round:not(.fill)>select{clip-path:polygon(-2% -2%,1.25rem -2%,1.25rem .5rem,calc(100% - 5rem) .5rem,calc(100% - 5rem) -2%,102% -2%,102% 102%,-2% 102%)}[dir=rtl] .field.label.border.round:not(.fill)>:is(input,textarea):is(:focus,[placeholder]:not(:placeholder-shown),.active),[dir=rtl] .field.label.border.round:not(.fill)>select{clip-path:polygon(-2% -2%,5rem -2%,5rem .5rem,calc(100% - 1.25rem) .5rem,calc(100% - 1.25rem) -2%,102% -2%,102% 102%,-2% 102%)}.field.label>:focus+label{color:var(--primary)}.field.label.invalid>label,.field.label.invalid>label:after{color:var(--error)!important;border-color:var(--error)!important}.field.label>label>a{block-size:inherit;line-height:inherit;inline-size:1rem}.field.label>label>a>:is(i,img,svg){block-size:1rem;line-height:1rem;inline-size:1rem;font-size:1rem}.field>:is(.helper,.error){position:absolute;inset:auto auto 0 1rem;transform:translateY(100%);font-size:.75rem;background:none!important;padding-block-start:.125rem}[dir=rtl] .field>:is(.helper,.error){inset:auto 1rem 0 auto}a.helper{color:var(--primary)}.field>.error{color:var(--error)!important}.field.round>:is(.helper,.error){inset-inline-start:1.5rem}.field.invalid>.helper{display:none}table td>.field{margin:0}fieldset{border-radius:.25rem;padding:1rem;border:.0625rem solid var(--outline-variant)}fieldset>legend{margin:0 -.25rem;padding:0 .25rem}fieldset>legend+*{margin-block-start:0!important}.grid{--_gap: 1rem;display:grid;grid-template-columns:repeat(12,1fr);gap:var(--_gap);block-size:auto}.grid.no-space{--_gap: 0rem}.grid.medium-space{--_gap: 1.5rem}.grid.large-space{--_gap: 2rem}.grid>*{margin:0}.s1{grid-area:auto/span 1}.s2{grid-area:auto/span 2}.s3{grid-area:auto/span 3}.s4{grid-area:auto/span 4}.s5{grid-area:auto/span 5}.s6{grid-area:auto/span 6}.s7{grid-area:auto/span 7}.s8{grid-area:auto/span 8}.s9{grid-area:auto/span 9}.s10{grid-area:auto/span 10}.s11{grid-area:auto/span 11}.s12{grid-area:auto/span 12}@media only screen and (min-width: 601px){.m1{grid-area:auto/span 1}.m2{grid-area:auto/span 2}.m3{grid-area:auto/span 3}.m4{grid-area:auto/span 4}.m5{grid-area:auto/span 5}.m6{grid-area:auto/span 6}.m7{grid-area:auto/span 7}.m8{grid-area:auto/span 8}.m9{grid-area:auto/span 9}.m10{grid-area:auto/span 10}.m11{grid-area:auto/span 11}.m12{grid-area:auto/span 12}}@media only screen and (min-width: 993px){.l1{grid-area:auto/span 1}.l2{grid-area:auto/span 2}.l3{grid-area:auto/span 3}.l4{grid-area:auto/span 4}.l5{grid-area:auto/span 5}.l6{grid-area:auto/span 6}.l7{grid-area:auto/span 7}.l8{grid-area:auto/span 8}.l9{grid-area:auto/span 9}.l10{grid-area:auto/span 10}.l11{grid-area:auto/span 11}.l12{grid-area:auto/span 12}}i,:is(.checkbox,.radio,.switch)>span:before,:is(.checkbox,.radio,.switch)>span>i{--_size: 1.5rem;font-family:var(--font-icon);font-weight:400;font-style:normal;font-size:var(--_size);letter-spacing:normal;text-transform:none;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;word-wrap:normal;direction:ltr;font-feature-settings:"liga";-webkit-font-smoothing:antialiased;vertical-align:middle;text-align:center;overflow:hidden;inline-size:var(--_size);min-inline-size:var(--_size);block-size:var(--_size);min-block-size:var(--_size);box-sizing:content-box;line-height:normal;border-radius:0}i:has(.badge){overflow:unset}i.tiny{--_size: 1rem}.chip>i,i.small{--_size: 1.25rem}i.medium{--_size: 1.5rem}i.large{--_size: 1.75rem}i.extra{--_size: 2rem}i.fill,a.active>i,button.active>i{font-variation-settings:"FILL" 1}i>:is(img,svg){inline-size:100%;block-size:100%;background-size:100%;border-radius:inherit;position:absolute;inset:0 auto auto 0;padding:inherit}i[class*=fa-]{font-size:calc(var(--_size) * .85);line-height:normal;block-size:auto;min-block-size:auto}.absolute{position:absolute}.fixed{position:fixed}:is(.absolute,.fixed).left.right{inline-size:auto}:is(.absolute,.fixed).left.right.small{block-size:20rem}:is(.absolute,.fixed).left.right.medium{block-size:28rem}:is(.absolute,.fixed).left.right.large{block-size:44rem}:is(.absolute,.fixed).top.bottom.small{inline-size:20rem}:is(.absolute,.fixed).top.bottom.medium{inline-size:28rem}:is(.absolute,.fixed).top.bottom.large{inline-size:44rem}.list{display:flex;flex-direction:column;padding:0;margin:0;flex:1}.list>li,.list>li>details>summary,.list>li>a:only-child{all:unset;box-sizing:border-box;position:relative;display:flex;align-items:center;align-self:normal;text-align:start;justify-content:flex-start;white-space:nowrap;gap:1rem;min-block-size:3.5rem;padding:.5rem 1rem;cursor:pointer;flex:1}.list>li:has(ul,ol,details[open],a:only-child){padding:0}.list>li>.list{padding:0 0 0 1rem}.list>li>*,.list>li>a:only-child>*,.list>li>details>summary>*{margin:0}.list>li>:is(details,.max),.list>li>a:only-child>.max,.list>li>details>summary>.max{flex:1}.list.border>li:not(:last-child):before,.list.border>li>details[open]>summary:before{content:"";position:absolute;background-color:var(--outline-variant);inset:auto 0 0 0;block-size:.0625rem;inline-size:auto}.list.no-space>li,.list.no-space>li>details>summary{min-block-size:2.5rem}.list.medium-space>li,.list.medium-space>li>details>summary{min-block-size:4.5rem}.list.large-space>li,.list.large-space>li>details>summary{min-block-size:5.5rem}:has(>main){display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto 1fr auto auto;grid-template-areas:"left top right" "left header right" "left main right" "left footer right" "left bottom right";min-block-size:100dvh;box-sizing:border-box;background-color:var(--surface)}nav.left{grid-area:left}nav.right{grid-area:right}nav.top{grid-area:top;position:sticky;top:0;right:0;bottom:0;left:0;block-size:4rem}nav.bottom{grid-area:bottom;position:sticky;top:0;right:0;bottom:0;left:0;block-size:4rem}header{grid-area:header}main{grid-area:main;padding:.5rem;overflow:hidden}footer{grid-area:footer}aside{z-index:1}aside:not(.fixed,.absolute).right{float:right}aside:not(.fixed,.absolute).left{float:left}svg{fill:currentcolor}:is(img,svg,video):is(.small,.medium,.large,.tiny,.extra,.round,.circle,.square,.responsive){--_size: 3rem;object-fit:cover;object-position:center;transition:transform var(--speed3),border-radius var(--speed3),padding var(--speed3);block-size:var(--_size);inline-size:var(--_size)}:is(img,svg,video).round{--_round: .5rem}:is(img,svg,video).tiny{--_size: 2rem}:is(img,svg,video).small{--_size: 2.5rem}:is(img,svg,video).large{--_size: 3.5rem}:is(img,svg,video).extra{--_size: 4rem}:is(img,svg,video).responsive{--_size: 100%;margin:0 auto}:is(img,svg,video).responsive.tiny{inline-size:100%;block-size:4rem}:is(img,svg,video).responsive.small{inline-size:100%;block-size:8rem}:is(img,svg,video).responsive.medium{inline-size:100%;block-size:12rem}:is(img,svg,video).responsive.large{inline-size:100%;block-size:16rem}:is(img,svg,video).responsive.extra{inline-size:100%;block-size:20rem}:is(img,svg,video).responsive.round{--_round: 2rem}:is(img,svg,video).empty-state{max-inline-size:100%;inline-size:24rem}:is(button,.button,.chip):not(.transparent)>.responsive{border:.25rem solid transparent}:is(button,.button,.chip,.field)>:is(img,svg):not(.responsive),.tabs :is(img,svg):not(.responsive){min-inline-size:1.5rem;max-inline-size:1.5rem;min-block-size:1.5rem;max-block-size:1.5rem}:is(button,.button,.chip):not(.extend)>.responsive:first-child{margin-inline-start:calc(-1 * var(--_padding))}:is(button,.button,.chip):not(.extend)>.responsive:not(:first-child){margin-inline-end:calc(-1 * var(--_padding))}:is(button,.button,.chip,.circle,.square,.extend)>.responsive{--_size: inherit;margin:0 auto}.extend>:is(.responsive,i){margin:0;position:absolute;inset-inline:1rem;z-index:1}.extend>.responsive{inset-inline:0;inline-size:3.5rem}.extend.border>.responsive{inline-size:3.375rem}menu{opacity:0;visibility:hidden;position:absolute;box-shadow:var(--elevate2);background-color:var(--surface-container);z-index:11;inset:auto auto 0 0;inline-size:100%;max-block-size:50vh;max-inline-size:none!important;overflow-x:hidden;overflow-y:auto;font-size:.875rem;font-weight:400;text-transform:none;color:var(--on-surface);line-height:normal;text-align:start;border-radius:.25rem;transform:scale(.8) translateY(120%);transition:all var(--speed2),0s background-color;justify-content:flex-start}[dir=rtl] menu{inset:auto 0 0 auto}menu.no-wrap{inline-size:max-content;white-space:nowrap!important}menu.active,:not(menu,[data-ui]):focus-within>menu,menu>li:hover>menu,menu>li>menu:hover{opacity:1;visibility:visible;transform:scale(1) translateY(100%)}menu.active.top,:not(menu,[data-ui]):focus-within>menu.top,menu>li:hover>menu.top,menu>li>menu.top:hover{transform:scale(1) translateY(-100%)}menu *{white-space:inherit!important}menu>li,menu>li>a:only-child{all:unset;box-sizing:border-box;position:relative;display:flex;align-items:center;align-self:normal;text-align:start;justify-content:inherit;white-space:nowrap;gap:1rem;padding:.5rem 1rem;min-block-size:3rem;flex:1;margin:0!important;cursor:pointer}menu>li:is(:hover,:focus,.active){background-color:var(--active)}menu>li>:is(.max,.field),menu>li>a:only-child>.max,menu>li:has(.field,a:only-child){flex:1;padding:0;margin:0}menu.min{inset:0 0 auto 0;transform:none!important;background-color:var(--surface-variant)!important;color:var(--on-surface-variant)!important}[dir=rtl] menu.min.right,menu.min.left,menu.top.left{inset:0 0 auto auto}[dir=rtl] menu.min.left,menu.min.right,menu.top,menu.top.right{inset:0 auto auto 0}menu.max{position:fixed;top:0;right:0;bottom:0;left:0;block-size:100%;max-block-size:none;min-block-size:auto;z-index:100;transform:none!important;background-color:var(--surface-variant)!important;color:var(--on-surface-variant)!important;border-radius:0}menu.no-wrap:is(.min,.max){min-inline-size:16rem}[dir=rtl] menu.right,[dir=rtl] menu.top.min.right,menu.left,menu.top.min.left{inset:auto 0 0 auto}[dir=rtl] menu.left,[dir=rtl] menu.top.min.left,menu.right,menu.top.min{inset:auto auto 0 0}menu.top{transform:scale(.8) translateY(-120%)}menu:has(menu){--_child: 1;--_type: 0;overflow:unset;white-space:nowrap;inline-size:auto;min-inline-size:12rem;max-block-size:none}menu>li>:is(menu,menu.right),[dir=rtl] menu>li>menu.left{inset:auto auto calc(3rem * (var(--_child) - var(--_type))) 100%}[dir=rtl] menu>li>:is(menu,menu.right),menu>li>menu.left{inset:auto 100% calc(3rem * (var(--_child) - var(--_type))) auto}menu>li>:is(menu.top,menu.top.right),[dir=rtl] menu>li>menu.top.left{inset:calc(3rem * (var(--_child) - var(--_type))) auto auto 100%}[dir=rtl] menu>li>:is(menu.top,menu.top.right),menu>li>menu.top.left{inset:calc(3rem * (var(--_child) - var(--_type))) 100% auto auto}menu.no-space>li{min-block-size:2.5rem}menu.medium-space>li{min-block-size:3.5rem}menu.large-space>li{min-block-size:4rem}menu.border>li:not(:last-child):before{content:"";position:absolute;background-color:var(--outline-variant);inset:auto 0 0 0;block-size:.0625rem;inline-size:auto}menu.transparent{margin:0 -1rem!important;padding:.5rem}menu.transparent>li{background-color:inherit;box-shadow:none;padding:0}menu>li:nth-last-child(2){--_child: 2}menu>li:nth-last-child(3){--_child: 3}menu>li:nth-last-child(4){--_child: 4}menu>li:nth-last-child(5){--_child: 5}menu>li:nth-last-child(6){--_child: 6}menu>li:nth-last-child(7){--_child: 7}menu>li:nth-last-child(8){--_child: 8}menu>li:nth-last-child(9){--_child: 9}menu>li:nth-last-child(10){--_child: 10}menu>li:nth-last-child(11){--_child: 11}menu>li:nth-last-of-type(2){--_type: 1}menu>li:nth-last-of-type(3){--_type: 2}menu>li:nth-last-of-type(4){--_type: 3}menu>li:nth-last-of-type(5){--_type: 4}menu>li:nth-last-of-type(6){--_type: 5}menu>li:nth-last-of-type(7){--_type: 6}menu>li:nth-last-of-type(8){--_type: 7}menu>li:nth-last-of-type(9){--_type: 8}menu>li:nth-last-of-type(10){--_type: 9}menu>li:nth-last-of-type(11){--_type: 10}nav>:is(ol,ul),nav>:is(ol,ul)>li{all:unset}nav,.row,a.row{display:flex;align-items:center;align-self:normal;text-align:start;justify-content:flex-start;white-space:nowrap;gap:1rem;border-radius:0}a.row,nav.row{min-block-size:3rem;margin:0}:is(nav,.row,.max)>:only-child,nav>:is(ol,ul)>li>:only-child{margin:0}:is(nav,.row)>:not(ul,ol,header,footer){margin:0;white-space:normal;flex:none}:is(nav,.row).min{display:inline-flex}:is(nav,.row,li).no-space{gap:0}:is(nav,.row,li).tiny-space{gap:.5rem}:is(nav,.row,li).medium-space{gap:1.5rem}:is(nav,.row,li).large-space{gap:2rem}:is(nav,.row)>.max,:is(nav,.row)>:is(ol,ul)>.max{flex:1}:is(nav,.row).wrap{display:flex;flex-wrap:wrap}:is(header,footer)>:is(nav,.row){min-block-size:inherit}nav:is(.left,.right,.top,.bottom){position:sticky;top:0;right:0;bottom:0;left:0;border:0;color:var(--on-surface);transform:none;z-index:100;text-align:center;padding:.5rem;margin:0}nav:is(.left,.right){justify-content:flex-start;flex-direction:column;background-color:var(--surface);block-size:100dvh;min-inline-size:6rem}nav:is(.top,.bottom){padding:.5rem;justify-content:center;flex-direction:row;background-color:var(--surface-container);block-size:auto;min-block-size:4.5rem}nav>header{min-block-size:auto;padding:0;margin:0 0 1rem;align-items:flex-start;gap:1rem;background:none!important}nav:is(.top,.bottom)>header{flex-direction:row;align-items:center;margin:0 1rem 0 0}nav>header>*{margin:0}nav>header>.extend:hover{--_padding: 0;inline-size:var(--_size)}nav>header>.extend:hover>span{display:none}nav>:is(ol,ul){all:inherit;min-inline-size:auto;margin:0;padding:0;flex:auto}nav.max:is(.left,.right,.top,.bottom){gap:0;inline-size:auto;align-items:flex-start;min-inline-size:12.75rem;padding:.5rem 1.25rem}nav.max>:is(ol,ul){padding:0}nav.max>header{margin:0 0 1.25rem}nav.max:is(.top,.bottom)>header{margin:0 1.25rem 0 0}nav.max>header>.extend{--_padding: 1.5rem;inline-size:auto;padding:0 var(--_padding)}nav.max>header>.extend>span{display:block;margin-inline-start:var(--_padding)}nav.max>header>.extend>:is(img,svg)+span{margin-inline-start:calc(1rem + var(--_padding))}nav.max:is(.top,.bottom){padding:0 .5rem;align-items:center;min-inline-size:auto;max-inline-size:none}nav:is(.left,.right,.top,.bottom)>a:not(.button,.chip),nav:is(.left,.right,.top,.bottom)>:is(ol,ul)>li>a:not(.button,.chip){display:flex;flex-direction:column;gap:.25rem;line-height:normal;inline-size:3.5rem;font-size:.8rem}nav:not(.max):is(.left,.right,.top,.bottom)>a:not(.button,.chip)>i,nav:not(.max):is(.left,.right,.top,.bottom)>:is(ol,ul)>li>a:not(.button,.chip)>i{padding:.25rem 1rem;border-radius:2rem;transition:padding var(--speed1) linear;margin:0 auto}nav.max:is(.left,.right,.top,.bottom)>a:not(.button,.chip),nav.max:is(.left,.right,.top,.bottom)>:is(ol,ul)>li>a:not(.button,.chip){flex-direction:row;gap:.5rem;inline-size:auto;block-size:3.5rem;padding:0 1rem;border-radius:2rem;font-size:inherit}nav.max:is(.top,.bottom)>a:not(.button,.chip),nav.max:is(.top,.bottom)>:is(ol,ul)>li>a:not(.button,.chip){gap:.25rem;block-size:2.5rem;font-size:.8rem}nav.max:is(.left,.right,.top,.bottom)>a.active:not(.button,.chip),nav.max:is(.left,.right,.top,.bottom)>:is(ol,ul)>li>a.active:not(.button,.chip),nav:is(.left,.right,.top,.bottom):not(.max)>a.active:not(.button,.chip)>i,nav:is(.left,.right,.top,.bottom):not(.max)>:is(ol,ul)>li>a.active:not(.button,.chip)>i{background-color:var(--secondary-container);color:var(--on-secondary-container)}:is(nav,.row):is(.left-align,.top-align,.vertical){justify-content:flex-start}:is(nav,.row):is(.right-align,.bottom-align){justify-content:flex-end}:is(nav,.row):is(.center-align,.middle-align){justify-content:center}:is(nav,.row):is(.left-align,.top-align,.vertical).vertical{align-items:flex-start}:is(nav,.row):is(.right-align,.bottom-align).vertical{align-items:flex-end}:is(nav,.row):is(.center-align,.middle-align).vertical{align-items:center}nav:not(.left,.right)>.space{inline-size:.5rem}nav:not(.left,.right)>.medium-space{inline-size:1rem}nav:not(.left,.right)>.large-space{inline-size:1.5rem}nav.tabbed{background-color:var(--surface-container);border-radius:4rem!important;gap:0rem;block-size:4rem}nav.tabbed.small{block-size:3rem}nav.tabbed.large{block-size:5rem}nav.tabbed>a{border-radius:inherit;block-size:inherit;display:inline-flex;align-items:center;padding-inline:1rem;gap:.5rem;font-size:1rem;flex:1}nav.tabbed>a.active{background-color:var(--primary-container)}nav.toolbar{display:inline-flex;justify-content:space-around;border-radius:2rem;background-color:var(--surface-container);color:var(--on-surface);padding:0 1rem;gap:.5rem;min-block-size:4rem;min-inline-size:4rem}nav.toolbar>a{display:inline-flex;gap:.5rem;min-inline-size:2.5rem;min-block-size:2.5rem;border-radius:1.75rem}nav.toolbar>a:has(>:not(i)){padding:0 1rem}nav.toolbar>a.active{background-color:var(--secondary-container);color:var(--on-secondary-container)}nav.toolbar.fill{background-color:var(--primary-container)!important;color:var(--on-primary-container)!important}nav.toolbar.fill>a.active{background-color:var(--surface-container)!important;color:var(--on-surface)!important}nav.toolbar.vertical{flex-direction:column!important;min-inline-size:4rem;padding:1rem 0;align-self:center;align-items:center!important}nav.toolbar.vertical>a{inline-size:2.5rem;block-size:2.5rem}nav.toolbar.vertical>a>:is(div,span):not(.badge,.tooltip){display:none}nav.toolbar.max{border-radius:0;display:flex}nav.group{background:none!important}nav.group:is(.connected,.split){gap:.125rem}nav.group:not(.split)>:is(.button,button):not(.border){background-color:var(--surface-container);color:var(--on-surface-container)}nav.group:not(.split)>:is(.button,button).active{background-color:var(--primary);color:var(--on-primary)}nav.group.connected>:is(.button,button):not(.border){background-color:var(--surface-container);color:var(--on-surface-container)}nav.group.connected>:is(.button,button).active{background-color:var(--secondary-container);color:var(--on-secondary-container)}nav.group:is(.connected,.split)>:is(.button,button).active,nav.split>:is(.button,button):active{border-radius:2rem!important}:not(nav)>:is(ul,ol){all:revert}:is(.scroll,.no-scroll,.no-space,.tabs,.tabbed)>:focus-visible{outline:.125rem solid var(--primary);outline-offset:-.125rem}nav.split>:is(.button,button):not(.chip,.fill,.border){background-color:var(--primary);color:var(--on-primary)}nav.group.primary-container>button,nav:is(.max,.toolbar,.tabbed,.group).primary>:is(button,a).active,nav:not(.max,.toolbar,.tabbed,.group).primary>a.active:not(.button,.chip)>i{background-color:var(--primary-container)!important;color:var(--on-primary-container)!important}nav.group.primary>button,nav:is(.max,.toolbar,.tabbed,.group).primary-container>:is(button,a).active,nav:not(.max,.toolbar,.tabbed,.group).primary-container>a.active:not(.button,.chip)>i{background-color:var(--primary)!important;color:var(--on-primary)!important}nav.group.secondary-container>button,nav:is(.max,.toolbar,.tabbed,.group).secondary>:is(button,a).active,nav:not(.max,.toolbar,.tabbed,.group).secondary>a.active:not(.button,.chip)>i{background-color:var(--secondary-container)!important;color:var(--on-secondary-container)!important}nav.group.secondary>button,nav:is(.max,.toolbar,.tabbed,.group).secondary-container>:is(button,a).active,nav:not(.max,.toolbar,.tabbed,.group).secondary-container>a.active:not(.button,.chip)>i{background-color:var(--secondary)!important;color:var(--on-secondary)!important}nav.group.tertiary-container>button,nav:is(.max,.toolbar,.tabbed,.group).tertiary>:is(button,a).active,nav:not(.max,.toolbar,.tabbed,.group).tertiary>a.active:not(.button,.chip)>i{background-color:var(--tertiary-container)!important;color:var(--on-tertiary-container)!important}nav.group.tertiary>button,nav:is(.max,.toolbar,.tabbed,.group).tertiary-container>:is(button,a).active,nav:not(.max,.toolbar,.tabbed,.group).tertiary-container>a.active:not(.button,.chip)>i{background-color:var(--tertiary)!important;color:var(--on-tertiary)!important}@media only screen and (max-width: 600px){nav.top,nav.bottom{justify-content:space-around}}.overlay,dialog::backdrop{display:block!important;opacity:0;visibility:hidden;position:fixed;top:0;right:0;bottom:0;left:0;color:var(--on-surface);background-color:var(--overlay);z-index:100;transition:all var(--speed3),0s background-color;border-radius:0}.overlay.active{opacity:1;visibility:visible}dialog:popover-open::backdrop{opacity:1;visibility:visible}.overlay+dialog::backdrop,.snackbar::backdrop{display:none}[popover]{border:0}.page{--_transform: translate(0, 0);opacity:0;position:absolute;display:none}.page.active{opacity:1;position:inherit;display:inherit;animation:var(--speed4) to-page ease}.page.active.top{--_transform: translate(0, -4rem)}.page.active.bottom{--_transform: translate(0, 4rem)}.page.active.left{--_transform: translate(-4rem, 0)}.page.active.right{--_transform: translate(4rem, 0)}@keyframes to-page{0%{opacity:0;transform:var(--_transform)}to{opacity:1;transform:translate(0)}}progress{position:relative;inline-size:100%;block-size:.5rem;color:var(--primary);background:var(--primary-container);border-radius:1rem;flex:none;border:none;overflow:hidden;writing-mode:horizontal-tb;direction:ltr;-webkit-appearance:none}progress.small{inline-size:4rem}progress.medium{inline-size:8rem}progress.large{inline-size:12rem}progress:not(.circle,[value]):after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;inline-size:100%;block-size:100%;clip-path:none;background:currentcolor;animation:1.6s to-linear ease infinite}progress:not(.circle,[value])::-moz-progress-bar{animation:1.6s to-linear ease infinite}progress:not(.circle,[value])::-webkit-progress-value{animation:1.6s to-linear ease infinite}progress::-webkit-progress-bar{background:none}progress::-webkit-progress-value{background:currentcolor}progress::-moz-progress-bar{background:currentcolor}progress.circle{display:inline-block;inline-size:2.5rem;block-size:2.5rem;border-radius:50%;border-width:.3rem;border-style:solid;border-color:currentcolor;animation:1.6s to-circular linear infinite;background:none;flex:none}progress.circle::-moz-progress-bar{background:none}progress.circle.small{inline-size:1.5rem;block-size:1.5rem;border-width:.2rem}progress.circle.large{inline-size:3.5rem;block-size:3.5rem;border-width:.4rem}:is(nav,.row,.field)>progress:not(.circle,.small,.medium,.large){flex:auto}progress.max{display:unset;position:absolute;inline-size:100%!important;block-size:100%!important;color:var(--active);background:none;top:0;right:0;bottom:0;left:0;border-radius:inherit;animation:none;writing-mode:horizontal-tb}progress:is(.horizontal,.vertical,.max){display:unset;inline-size:100%!important}progress.vertical{writing-mode:vertical-lr}progress.max.vertical{transform:rotate(-180deg)}progress.max+*{margin-block-start:0}:is(.button,button,.chip)>progress.circle{color:inherit}@supports (-moz-appearance:none){progress.max.vertical{transform:none}}@keyframes to-linear{0%{margin-inline-start:0%;inline-size:0%}50%{margin-inline-start:0%;inline-size:100%}to{margin-inline-start:100%;inline-size:0%}}@keyframes to-circular{0%{transform:rotate(0);clip-path:polygon(50% 50%,0% 0%,50% 0%,50% 0%,50% 0%,50% 0%,50% 0%,50% 0%,50% 0%)}20%{clip-path:polygon(50% 50%,0% 0%,50% 0%,100% 0%,100% 0%,100% 0%,100% 0%,100% 0%,100% 0%)}30%{clip-path:polygon(50% 50%,0% 0%,50% 0%,100% 0%,100% 50%,100% 50%,100% 50%,100% 50%,100% 50%)}40%{clip-path:polygon(50% 50%,0% 0%,50% 0%,100% 0%,100% 50%,100% 100%,100% 100%,100% 100%,100% 100%)}50%{clip-path:polygon(50% 50%,50% 0%,50% 0%,100% 0%,100% 50%,100% 100%,50% 100%,50% 100%,50% 100%)}60%{clip-path:polygon(50% 50%,100% 50%,100% 50%,100% 50%,100% 50%,100% 100%,50% 100%,0% 100%,0% 100%)}70%{clip-path:polygon(50% 50%,50% 100%,50% 100%,50% 100%,50% 100%,50% 100%,50% 100%,0% 100%,0% 50%)}80%{clip-path:polygon(50% 50%,0% 100%,0% 100%,0% 100%,0% 100%,0% 100%,0% 100%,0% 100%,0% 50%)}90%{transform:rotate(360deg);clip-path:polygon(50% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%)}to{clip-path:polygon(50% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%)}}*:has(>.shape){overflow:hidden}.shape{display:flex;align-items:center;justify-content:center;color:var(--on-primary);background-color:var(--primary);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;border-radius:0;block-size:3.5rem;inline-size:3.5rem}.transparent>.shape>i{filter:invert(1)}.shape.tiny-space{-webkit-mask-size:90%;mask-size:90%}.shape.space,.shape.small-space{-webkit-mask-size:80%;mask-size:80%}.shape.medium-space{-webkit-mask-size:70%;mask-size:70%}.shape.large-space{-webkit-mask-size:60%;mask-size:60%}.shape.extra-space{-webkit-mask-size:50%;mask-size:50%}.shape.tiny{block-size:2.5rem;inline-size:2.5rem}.shape.medium{block-size:4.5rem;inline-size:4.5rem}.shape.large{block-size:5.5rem;inline-size:5.5rem}.shape.extra{block-size:6.5rem;inline-size:6.5rem}.shape.max,.shape>.responsive,.shape>.responsive>.responsive{position:absolute;top:0;right:0;bottom:0;left:0;block-size:100%;inline-size:100%;margin:0!important;padding:0!important;border:0!important}.shape>.responsive{background:inherit;color:inherit}.shape.rotate{animation:linear to-shape-rotate infinite 12s}.shape.rotate>*{animation:linear to-shape-rotate infinite 12s reverse}.shape.fast-rotate{animation:linear to-shape-rotate infinite 6s}.shape.fast-rotate>*{animation:linear to-shape-rotate infinite 6s reverse}.shape.slow-rotate{animation:linear to-shape-rotate infinite 24s}.shape.slow-rotate{animation:linear to-shape-rotate infinite 24s reverse}:is(button,.button,.chip):has(>.shape)>.responsive{border:none}.shape.arch{-webkit-mask-image:url(arch.svg);mask-image:url(arch.svg)}.shape.arrow{-webkit-mask-image:url(arrow.svg);mask-image:url(arrow.svg)}.shape.boom{-webkit-mask-image:url(boom.svg);mask-image:url(boom.svg)}.shape.bun{-webkit-mask-image:url(bun.svg);mask-image:url(bun.svg)}.shape.burst{-webkit-mask-image:url(burst.svg);mask-image:url(burst.svg)}.shape.circle{-webkit-mask-image:url(circle.svg);mask-image:url(circle.svg)}.shape.clamshell{-webkit-mask-image:url(clamshell.svg);mask-image:url(clamshell.svg)}.shape.diamond{-webkit-mask-image:url(diamond.svg);mask-image:url(diamond.svg)}.shape.fan{-webkit-mask-image:url(fan.svg);mask-image:url(fan.svg)}.shape.flower{-webkit-mask-image:url(flower.svg);mask-image:url(flower.svg)}.shape.gem{-webkit-mask-image:url(gem.svg);mask-image:url(gem.svg)}.shape.ghost-ish{-webkit-mask-image:url(ghost-ish.svg);mask-image:url(ghost-ish.svg)}.shape.heart{-webkit-mask-image:url(heart.svg);mask-image:url(heart.svg)}.shape.leaf-clover4{-webkit-mask-image:url(leaf-clover4.svg);mask-image:url(leaf-clover4.svg)}.shape.leaft-clover8{-webkit-mask-image:url(leaf-clover8.svg);mask-image:url(leaf-clover8.svg)}.shape.loading-indicator{-webkit-mask-image:url(loading-indicator.svg);mask-image:url(loading-indicator.svg)}.shape.oval{-webkit-mask-image:url(oval.svg);mask-image:url(oval.svg)}.shape.pentagon{-webkit-mask-image:url(pentagon.svg);mask-image:url(pentagon.svg)}.shape.pill{-webkit-mask-image:url(pill.svg);mask-image:url(pill.svg)}.shape.pixel-circle{-webkit-mask-image:url(pixel-circle.svg);mask-image:url(pixel-circle.svg)}.shape.pixel-triangle{-webkit-mask-image:url(pixel-triangle.svg);mask-image:url(pixel-triangle.svg)}.shape.puffy{-webkit-mask-image:url(puffy.svg);mask-image:url(puffy.svg)}.shape.puffy-diamond{-webkit-mask-image:url(puffy-diamond.svg);mask-image:url(puffy-diamond.svg)}.shape.semicircle{-webkit-mask-image:url(semicircle.svg);mask-image:url(semicircle.svg)}.shape.sided-cookie4{-webkit-mask-image:url(sided-cookie4.svg);mask-image:url(sided-cookie4.svg)}.shape.sided-cookie6{-webkit-mask-image:url(sided-cookie6.svg);mask-image:url(sided-cookie6.svg)}.shape.sided-cookie7{-webkit-mask-image:url(sided-cookie7.svg);mask-image:url(sided-cookie7.svg)}.shape.sided-cookie9{-webkit-mask-image:url(sided-cookie9.svg);mask-image:url(sided-cookie9.svg)}.shape.sided-cookie12{-webkit-mask-image:url(sided-cookie12.svg);mask-image:url(sided-cookie12.svg)}.shape.slanted{-webkit-mask-image:url(slanted.svg);mask-image:url(slanted.svg)}.shape.soft-boom{-webkit-mask-image:url(soft-boom.svg);mask-image:url(soft-boom.svg)}.shape.soft-burst{-webkit-mask-image:url(soft-burst.svg);mask-image:url(soft-burst.svg)}.shape.square{-webkit-mask-image:url(square.svg);mask-image:url(square.svg)}.shape.sunny{-webkit-mask-image:url(sunny.svg);mask-image:url(sunny.svg)}.shape.triangle{-webkit-mask-image:url(triangle.svg);mask-image:url(triangle.svg)}.shape.very-sunny{-webkit-mask-image:url(very-sunny.svg);mask-image:url(very-sunny.svg)}@keyframes to-shape-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.checkbox,.radio,.switch{--_size: 1.5rem;direction:ltr;inline-size:auto;block-size:auto;line-height:normal;white-space:nowrap;cursor:pointer;display:inline-flex;align-items:center}:is(.checkbox,.radio,.switch).small{--_size: 1rem}:is(.checkbox,.radio,.switch).large{--_size: 2rem}:is(.checkbox,.radio,.switch).extra{--_size: 2.5rem}:is(.checkbox,.radio)>input{inline-size:var(--_size);block-size:var(--_size);opacity:0}.switch>input{inline-size:3.25rem;block-size:2rem;opacity:0}:is(.checkbox,.radio,.switch)>span{display:inline-flex;align-items:center;color:var(--on-surface);font-size:.875rem}:is(.checkbox,.radio)>span:not(:empty){padding-inline-start:.25rem}:is(.checkbox,.radio,.switch)>span:before,:is(.checkbox,.radio,.switch)>span>i,:is(.checkbox,.radio)>span:after{--_size: inherit;content:"";inline-size:var(--_size);block-size:var(--_size);box-sizing:border-box;margin:0 auto;outline:none;color:var(--primary);position:absolute;inset:auto auto auto calc(var(--_size) * -1);border-radius:50%;-webkit-user-select:none;user-select:none;z-index:1}.switch>span:before,.switch.icon>span>i{position:absolute;inset:50% auto auto 0;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;transition:all var(--speed2);font-size:calc(var(--_size) - .5rem);-webkit-user-select:none;user-select:none;min-inline-size:var(--_size);min-block-size:var(--_size);content:"";color:var(--surface-variant);background-color:var(--outline)}.switch>span:before,.switch.icon>span>i{transform:translate(-3rem,-50%) scale(.6)}.switch.icon>span>i{transform:translate(-3rem,-50%) scale(1)}.checkbox>span:before{content:"check_box_outline_blank"}.checkbox>input:checked+span:before{content:"check_box";font-variation-settings:"FILL" 1}.checkbox>input:indeterminate+span:before{content:"indeterminate_check_box"}.radio>span:before{content:"radio_button_unchecked"}.radio>input:checked+span:before{content:"radio_button_checked"}:is(.radio,.checkbox,.switch).icon>span:before{content:""!important;font-variation-settings:unset!important}:is(.checkbox,.radio)>span:after{transition:all var(--speed1);background-color:currentColor;box-shadow:0 0 0 0 currentColor;opacity:0}:is(.checkbox,.radio):is(:hover)>input:not(:disabled)+span:after,:is(.checkbox,.radio)>input:not(:disabled):is(:focus)+span:after{box-shadow:0 0 0 .5rem currentColor;opacity:.1}.switch>input:not(:disabled):is(:focus,:hover)+span:before,.switch.icon>input:not(:disabled):is(:focus,:hover)+span>i{box-shadow:0 0 0 .5rem var(--active)}:is(.checkbox,.radio)>input:checked+span:before,:is(.checkbox,.radio).icon>input:checked+span>i{color:var(--primary)}.icon>input:checked+span>i:first-child,.icon>span>i:last-child{opacity:0}.icon>input:checked+span>i:last-child,.icon>span>i:first-child{opacity:1}.switch>input:checked+span:after{border:none;background-color:var(--primary)}.switch>input:checked+span:before,.switch.icon>input:checked+span>i{content:"check";color:var(--primary);background-color:var(--on-primary);transform:translate(-1.75rem,-50%) scale(1)}.switch>input:active:not(:disabled)+span:before,.switch.icon>input:active:not(:disabled)+span>i{transform:translate(-3rem,-50%) scale(1.2)}.switch>input:active:checked:not(:disabled)+span:before,.switch.icon>input:active:checked:not(:disabled)+span>i{transform:translate(-1.75rem,-50%) scale(1.2)}:is(.checkbox,.radio,.switch)>input:disabled+span{opacity:.5;cursor:not-allowed}.switch>span:after{content:"";position:absolute;inset:50% auto auto 0;background-color:var(--active);border:.125rem solid var(--outline);box-sizing:border-box;inline-size:3.25rem;block-size:2rem;border-radius:2rem;transform:translate(-3.25rem,-50%)}.field>:is(nav,.row){flex-grow:1;padding:0 1rem}.field.round>:is(nav,.row){flex-grow:1;padding:0 1.5rem}[dir=rtl] .switch{transform:scale(-1)}[dir=rtl] .switch>span:before,[dir=rtl] .switch.icon>span>i{transform:translate(-3rem,-50%) scale(-.6)}[dir=rtl] .switch.icon>span>i{transform:translate(-3rem,-50%) scale(-1)}[dir=rtl] .switch>input:checked+span:before,[dir=rtl] .switch.icon>input:checked+span>i{transform:translate(-1.75rem,-50%) scale(-1)}.switch>:focus-visible+span:after{outline:.125rem solid var(--primary);outline-offset:.25rem}:is(.checkbox,.radio)>:focus-visible+span:before{outline:.125rem solid var(--primary);outline-offset:.375rem}.slider{--_start: 0%;--_end: 0%;--_value1: "";--_value2: "";--_track: 1rem;--_thumb: max(2.5rem, calc(var(--_track) + .5rem));display:flex;align-items:center!important;inline-size:auto;block-size:var(--_thumb);flex:none;direction:ltr;margin:0 1.25rem}[dir=rtl] .slider{transform:scaleX(-1)}.slider.vertical{flex-direction:row!important;margin:.5rem auto!important;padding:50% 0;transform:rotate(-90deg);inline-size:100%}.slider.tiny{--_track: 1rem}.slider.small{--_track: 1.5rem}.slider.medium{--_track: 2.5rem}.slider.large{--_track: 3.5rem}.slider.extra{--_track: 6rem}.slider>input{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-shadow:none;border:none;outline:none;pointer-events:none;inline-size:100%;block-size:var(--_track);background:none;z-index:1;padding:0;margin:0;transform:rotate(0)}.slider>input:only-of-type{pointer-events:all}.slider>input+input{position:absolute}.slider>input::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-shadow:none;border:none;outline:none;pointer-events:all;block-size:var(--_thumb);inline-size:.25rem;border-radius:.25rem;background:var(--primary);cursor:grab;margin:0;z-index:1}.slider>input::-webkit-slider-thumb:active{cursor:grabbing}.slider>input::-moz-range-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-shadow:none;border:none;outline:none;pointer-events:all;block-size:2.75rem;inline-size:.25rem;border-radius:.25rem;background:var(--primary);cursor:grab;margin:0}.slider>input::-moz-range-thumb:active{cursor:grabbing}.slider>input:not(:disabled):is(:focus)::-webkit-slider-thumb{transform:scaleX(.6)}.slider>input:not(:disabled):is(:focus)::-moz-range-thumb{transform:scaleX(.6)}.slider>input:disabled{cursor:not-allowed;opacity:1}.slider>input:disabled::-webkit-slider-thumb{background:var(--outline);cursor:not-allowed}.slider>input:disabled::-moz-range-thumb{background:var(--outline);cursor:not-allowed}.slider>input:disabled~span{background:var(--outline)}.slider>span{position:absolute;block-size:var(--_track);border-radius:1rem 0 0 1rem;background:var(--primary);color:var(--on-primary);z-index:0;inset:calc(50% - (var(--_track) / 2)) var(--_end) auto var(--_start);clip-path:polygon(0 0,calc(100% - .5rem) 0,calc(100% - .5rem) 100%,0 100%)}.slider>input[type=range]+input[type=range]~span{border-radius:0;clip-path:polygon(.5rem 0,max(.5rem,calc(100% - .5rem)) 0,max(.5rem,calc(100% - .5rem)) 100%,.5rem 100%)}.field>.slider{inline-size:100%}.slider:before{content:"";position:absolute;inline-size:100%;block-size:var(--_track);border-radius:1rem;background:var(--secondary-container);clip-path:polygon(calc(var(--_start) - .5rem) 0,0 0,0 100%,calc(var(--_start) - .5rem) 100%,calc(var(--_start) - .5rem) 0,calc(100% - var(--_end) + .5rem) 0,100% 0,100% 100%,calc(100% - var(--_end) + .5rem) 100%,calc(100% - var(--_end) + .5rem) 0)}.slider:has(>[disabled]):before{background:var(--outline-variant)}.slider:has([disabled]){opacity:.62}.slider>span>i{position:absolute;block-size:auto;inset:0 auto 0 .5rem;color:currentColor;z-index:1}.slider:not(.medium,.large,.extra)>span>i{display:none}.slider.vertical>i{transform:rotate(90deg)}.slider>.tooltip{visibility:hidden!important;opacity:0!important;inset:0 auto auto calc(100% - var(--_end));border-radius:2rem;transition:top var(--speed2) ease,opacity var(--speed2) ease;transform:translate(-50%,-50%)!important;padding:.75rem 1rem}[dir=rtl] .slider>.tooltip{transform:translate(-50%,-50%) scaleX(-1)!important}.slider>.tooltip+.tooltip{inset:.25rem calc(100% - var(--_start)) auto auto;transform:translate(50%,-50%)!important}[dir=rtl] .slider>.tooltip+.tooltip{transform:translate(50%,-50%) scaleX(-1)!important}.slider>.tooltip:before{content:var(--_value1)}.slider>.tooltip+.tooltip:before{content:var(--_value2)}.slider>:focus~.tooltip{inset-block-start:-1rem!important;opacity:1!important;visibility:visible!important}.slider.vertical>.tooltip{inset-block-start:auto!important;margin-block-start:calc(-1 * var(--_thumb))!important;block-size:2.5rem;inline-size:2.5rem;transform:rotate(90deg) translate(-75%,50%)!important}.slider.vertical>.tooltip+.tooltip{transform:rotate(90deg) translate(-75%,-50%)!important}:is(nav,.row,.field)>.slider:not(.circle,.small,.medium,.large){flex:auto}.slider.max,.slider.max.vertical,.slider.max>input,.slider.max.vertical>input{all:unset;margin:0!important;position:absolute;color:var(--primary);top:0;right:0;bottom:0;left:0;border-radius:inherit;overflow:hidden;z-index:2;cursor:grab;inline-size:100%;block-size:100%}.slider.max:before{display:none}.slider.max.vertical>input{writing-mode:vertical-lr;transform:rotate(-180deg)}.slider.max>input::-webkit-slider-thumb{opacity:0;inline-size:1rem;block-size:100vh;transform:none!important}.slider.max>input::-moz-range-thumb{opacity:0;inline-size:1rem;block-size:100vh;transform:none!important}.slider.max>span{block-size:auto!important;inset:0 var(--_end) 0 var(--_start);clip-path:none;background:currentcolor;color:inherit;border-radius:0}.slider.max.vertical>span{inset:var(--_end) 0 var(--_start) 0}.slider>input:focus-visible::-webkit-slider-thumb{outline:.1875rem solid var(--primary);outline-offset:.25rem}.slider>input:focus-visible::-moz-range-thumb{outline:.1875rem solid var(--primary);outline-offset:.25rem}.slider.max>input:focus-visible{outline:.1875rem solid var(--primary);outline-offset:-.125rem}@media (pointer: coarse){.slider>:hover~.tooltip{inset-block-start:-1rem!important;opacity:1!important;visibility:visible!important}}.snackbar{position:fixed;inset:auto auto 6rem 50%;inline-size:80%;block-size:auto;z-index:200;visibility:hidden;display:flex;box-shadow:var(--elevate2);color:var(--inverse-on-surface);background-color:var(--inverse-surface);padding:1rem;cursor:pointer;text-align:start;align-items:center;border-radius:.25rem;gap:.5rem;transition:all var(--speed2);transform:translate(-50%,1rem);opacity:0}.snackbar.top{inset:6rem auto auto 50%}.snackbar:is(.active){visibility:visible;transform:translate(-50%);opacity:1}.snackbar:popover-open{visibility:visible;transform:translate(-50%);opacity:1}.snackbar>.max{flex:auto}@media only screen and (min-width: 993px){.snackbar{inline-size:40%}}table{inline-size:100%;border-spacing:0;font-size:.875rem;text-align:start}.scroll>table,table :is(thead,tbody,tfoot,tr,th,td){background-color:inherit;color:inherit}:is(th,td){inline-size:auto;text-align:inherit;padding:.5rem;border-radius:0}:is(th,td)>*{vertical-align:middle}table.border>tbody>tr:not(:last-child)>td,thead>tr>th{border-block-end:.0625rem solid var(--outline)}tfoot>tr>th{border-block-start:.0625rem solid var(--outline)}table.stripes>tbody>tr:nth-child(odd){background-color:var(--active)}table.no-space :is(th,td){padding:0}table.medium-space :is(th,td){padding:.75rem}table.large-space :is(th,td){padding:1rem}table>.fixed,th.fixed{position:sticky;z-index:1;inset-block-start:0}tfoot.fixed,tfoot th.fixed{inset-block-end:0}:is(td,th).min{inline-size:.1%;white-space:nowrap}.tabs{display:flex;white-space:nowrap;border-block-end:.0625rem solid var(--surface-variant);border-radius:0}.tabs:not(.left-align,.right-align,.center-align){justify-content:space-around}.tabs>a{display:flex;font-size:.875rem;font-weight:500;color:var(--on-surface-variant);padding:.5rem 1rem;text-align:center;min-block-size:3rem;inline-size:100%;gap:.25rem}.tabs.small>a{min-block-size:2rem}.tabs.large>a{min-block-size:4rem}.tabs>a.active,.tabs>a.active>i{color:var(--primary)}.tabs>a.active:before{content:"";position:absolute;inset:auto 0 0 0;block-size:.125rem;background-color:var(--primary)}.tabs.min>a.active:before{margin:0 auto;max-inline-size:min(100%,4rem)}.tabs:is(.left-align,.center-align,.right-align)>a{inline-size:auto}.tooltip{--_space: -.5rem;visibility:hidden;display:flex;align-items:center;justify-content:center;gap:.5rem;background-color:var(--inverse-surface);color:var(--inverse-on-surface);font-size:.75rem;text-align:center;border-radius:.25rem;padding:.5rem;position:absolute;z-index:200;inset:0 auto auto 50%;inline-size:auto;white-space:nowrap;font-weight:500;opacity:0;transition:all var(--speed2);line-height:normal;transform:translate(-50%,-100%) scale(.9)}.tooltip.left{inset:50% auto auto 0;transform:translate(-100%,-50%) scale(.9)}.tooltip.right{inset:50% 0 auto auto;transform:translate(100%,-50%) scale(.9)}.tooltip.bottom{inset:auto auto 0 50%;transform:translate(-50%,100%) scale(.9)}.tooltip.small{inline-size:8rem;white-space:normal}.tooltip.medium{inline-size:12rem;white-space:normal}.tooltip.large{inline-size:16rem;white-space:normal}:hover>.tooltip{visibility:visible;opacity:1;transform:translate(-50%,-100%) scale(1)}:hover>.tooltip.left{transform:translate(-100%,-50%) scale(1)}:hover>.tooltip.right{transform:translate(100%,-50%) scale(1)}:hover>.tooltip.bottom{transform:translate(-50%,100%) scale(1)}.tooltip.no-space{--_space: 0}.tooltip.medium-space{--_space: -1rem}.tooltip.large-space{--_space: -1.5rem}.tooltip:not(.left,.right,.bottom){margin-block-start:var(--_space)!important}.tooltip.left,.tooltip.right{margin-inline:var(--_space)!important}.tooltip.bottom{margin-block-end:var(--_space)!important}menu:active~.tooltip,:is(button,.button):focus>menu~.tooltip,.field>:focus~menu~.tooltip{visibility:hidden}.slider>.tooltip{--_space: -1.25rem}.slider.vertical>.tooltip{--_space: -.75rem}.slider.vertical>.tooltip:is(.left,.right){--_space: -.5rem}.tooltip.max{display:block;font-size:inherit;white-space:normal;text-align:start;inline-size:20rem;border-radius:.5rem;padding:1rem;box-shadow:var(--elevate2)} diff --git a/src/css/material-symbols-outlined.woff2 b/src/css/material-symbols-outlined.woff2 new file mode 100644 index 00000000..524ab5d2 Binary files /dev/null and b/src/css/material-symbols-outlined.woff2 differ diff --git a/src/img/ALM_planner.webp b/src/img/ALM_planner.webp new file mode 100644 index 00000000..2288a47c Binary files /dev/null and b/src/img/ALM_planner.webp differ diff --git a/src/img/ALM_step1.webp b/src/img/ALM_step1.webp new file mode 100644 index 00000000..3f950773 Binary files /dev/null and b/src/img/ALM_step1.webp differ diff --git a/src/img/ALM_step2.webp b/src/img/ALM_step2.webp new file mode 100644 index 00000000..a624b774 Binary files /dev/null and b/src/img/ALM_step2.webp differ diff --git a/src/img/ALM_step3.webp b/src/img/ALM_step3.webp new file mode 100644 index 00000000..13822e8e Binary files /dev/null and b/src/img/ALM_step3.webp differ diff --git a/src/img/ALM_wireframe.webp b/src/img/ALM_wireframe.webp new file mode 100644 index 00000000..381759f3 Binary files /dev/null and b/src/img/ALM_wireframe.webp differ diff --git a/src/img/ALM_workflow.webp b/src/img/ALM_workflow.webp new file mode 100644 index 00000000..1312d2c3 Binary files /dev/null and b/src/img/ALM_workflow.webp differ diff --git a/src/img/AdamJolicoeur_dot_com-minimal.png b/src/img/AdamJolicoeur_dot_com-minimal.png deleted file mode 100644 index 3a535c9c..00000000 Binary files a/src/img/AdamJolicoeur_dot_com-minimal.png and /dev/null differ diff --git a/src/img/AdamJolicoeur_dot_com.webp b/src/img/AdamJolicoeur_dot_com.webp new file mode 100644 index 00000000..be3c8e35 Binary files /dev/null and b/src/img/AdamJolicoeur_dot_com.webp differ diff --git a/src/img/Bootstrap5SocialImage.png b/src/img/Bootstrap5SocialImage.png deleted file mode 100644 index c8507ed4..00000000 Binary files a/src/img/Bootstrap5SocialImage.png and /dev/null differ diff --git a/src/img/CAS_Figma_Cover.png b/src/img/CAS_Figma_Cover.png new file mode 100644 index 00000000..0c83c411 Binary files /dev/null and b/src/img/CAS_Figma_Cover.png differ diff --git a/src/img/CAS_Figma_Cover.webp b/src/img/CAS_Figma_Cover.webp new file mode 100644 index 00000000..089b35fd Binary files /dev/null and b/src/img/CAS_Figma_Cover.webp differ diff --git a/src/img/CEA_AssetExamples.webp b/src/img/CEA_AssetExamples.webp new file mode 100644 index 00000000..c01617fd Binary files /dev/null and b/src/img/CEA_AssetExamples.webp differ diff --git a/src/img/CEA_ClientDetail.webp b/src/img/CEA_ClientDetail.webp new file mode 100644 index 00000000..bd7b3a7d Binary files /dev/null and b/src/img/CEA_ClientDetail.webp differ diff --git a/src/img/CEA_Dashboard.webp b/src/img/CEA_Dashboard.webp new file mode 100644 index 00000000..1cebdfa0 Binary files /dev/null and b/src/img/CEA_Dashboard.webp differ diff --git a/src/img/CEA_Dashboard_fix.webp b/src/img/CEA_Dashboard_fix.webp new file mode 100644 index 00000000..69cad205 Binary files /dev/null and b/src/img/CEA_Dashboard_fix.webp differ diff --git a/src/img/CEA_Engagement.webp b/src/img/CEA_Engagement.webp new file mode 100644 index 00000000..65b5f83a Binary files /dev/null and b/src/img/CEA_Engagement.webp differ diff --git a/src/img/CEA_Navigation.webp b/src/img/CEA_Navigation.webp new file mode 100644 index 00000000..24a54bc3 Binary files /dev/null and b/src/img/CEA_Navigation.webp differ diff --git a/src/img/CEA_Palette.webp b/src/img/CEA_Palette.webp new file mode 100644 index 00000000..06be6739 Binary files /dev/null and b/src/img/CEA_Palette.webp differ diff --git a/src/img/CEA_Settings.webp b/src/img/CEA_Settings.webp new file mode 100644 index 00000000..39e19ae0 Binary files /dev/null and b/src/img/CEA_Settings.webp differ diff --git a/src/img/CEA_wireframe_first.webp b/src/img/CEA_wireframe_first.webp new file mode 100644 index 00000000..14231fe9 Binary files /dev/null and b/src/img/CEA_wireframe_first.webp differ diff --git a/src/img/CE_thumbnail.png b/src/img/CE_thumbnail.png new file mode 100644 index 00000000..7b35f4d8 Binary files /dev/null and b/src/img/CE_thumbnail.png differ diff --git a/src/img/CE_thumbnail.webp b/src/img/CE_thumbnail.webp new file mode 100644 index 00000000..8ad7abc2 Binary files /dev/null and b/src/img/CE_thumbnail.webp differ diff --git a/src/img/CE_thumbnail_900x563.png b/src/img/CE_thumbnail_900x563.png new file mode 100644 index 00000000..ead00b08 Binary files /dev/null and b/src/img/CE_thumbnail_900x563.png differ diff --git a/src/img/GamesAndThings_1024.png b/src/img/GamesAndThings_1024.png new file mode 100644 index 00000000..2c7d4687 Binary files /dev/null and b/src/img/GamesAndThings_1024.png differ diff --git a/src/img/GamesAndThings_1024.webp b/src/img/GamesAndThings_1024.webp new file mode 100644 index 00000000..ff282687 Binary files /dev/null and b/src/img/GamesAndThings_1024.webp differ diff --git a/src/img/Jolicoeur_iOS-small.png b/src/img/Jolicoeur_iOS-small.png new file mode 100644 index 00000000..c2041879 Binary files /dev/null and b/src/img/Jolicoeur_iOS-small.png differ diff --git a/src/img/Jolicoeur_iOS-small.webp b/src/img/Jolicoeur_iOS-small.webp new file mode 100644 index 00000000..b57a8fc2 Binary files /dev/null and b/src/img/Jolicoeur_iOS-small.webp differ diff --git a/src/img/Jolicoeur_iOS.webp b/src/img/Jolicoeur_iOS.webp new file mode 100644 index 00000000..30e51d3f Binary files /dev/null and b/src/img/Jolicoeur_iOS.webp differ diff --git a/src/img/OSIO-laptop-screen-1200.webp b/src/img/OSIO-laptop-screen-1200.webp new file mode 100644 index 00000000..7637e6d1 Binary files /dev/null and b/src/img/OSIO-laptop-screen-1200.webp differ diff --git a/src/img/OSIO_thumbnail.png b/src/img/OSIO_thumbnail.png new file mode 100644 index 00000000..174b62de Binary files /dev/null and b/src/img/OSIO_thumbnail.png differ diff --git a/src/img/OSIO_thumbnail.webp b/src/img/OSIO_thumbnail.webp new file mode 100644 index 00000000..3bccbd9c Binary files /dev/null and b/src/img/OSIO_thumbnail.webp differ diff --git a/src/img/OSIO_thumbnail_960x494.png b/src/img/OSIO_thumbnail_960x494.png new file mode 100644 index 00000000..2d8e0b81 Binary files /dev/null and b/src/img/OSIO_thumbnail_960x494.png differ diff --git a/src/img/SC_demo.webp b/src/img/SC_demo.webp new file mode 100644 index 00000000..efee9ce6 Binary files /dev/null and b/src/img/SC_demo.webp differ diff --git a/src/img/Sitemap_alpha.webp b/src/img/Sitemap_alpha.webp new file mode 100644 index 00000000..846ea988 Binary files /dev/null and b/src/img/Sitemap_alpha.webp differ diff --git a/src/img/Timetrak.webp b/src/img/Timetrak.webp new file mode 100644 index 00000000..f54713fe Binary files /dev/null and b/src/img/Timetrak.webp differ diff --git a/src/img/adamj-github.png b/src/img/adamj-github.png deleted file mode 100644 index 1e7ce494..00000000 Binary files a/src/img/adamj-github.png and /dev/null differ diff --git a/src/img/ajolicoeur_wordcloud.png b/src/img/ajolicoeur_wordcloud.png deleted file mode 100644 index e6066cb5..00000000 Binary files a/src/img/ajolicoeur_wordcloud.png and /dev/null differ diff --git a/src/img/ajolicoeur_wordcloud_writing.png b/src/img/ajolicoeur_wordcloud_writing.png deleted file mode 100644 index 838fa78c..00000000 Binary files a/src/img/ajolicoeur_wordcloud_writing.png and /dev/null differ diff --git a/src/img/avatar.png b/src/img/avatar.png index a9baec09..f999bf57 100644 Binary files a/src/img/avatar.png and b/src/img/avatar.png differ diff --git a/src/img/avatar.webp b/src/img/avatar.webp new file mode 100644 index 00000000..3a78d800 Binary files /dev/null and b/src/img/avatar.webp differ diff --git a/src/img/avatar_500x500.png b/src/img/avatar_500x500.png new file mode 100644 index 00000000..1fdacc20 Binary files /dev/null and b/src/img/avatar_500x500.png differ diff --git a/src/img/avatar_500x500.webp b/src/img/avatar_500x500.webp new file mode 100644 index 00000000..d11dfcfd Binary files /dev/null and b/src/img/avatar_500x500.webp differ diff --git a/src/img/banner.jpg b/src/img/banner.jpg deleted file mode 100644 index 328745c8..00000000 Binary files a/src/img/banner.jpg and /dev/null differ diff --git a/src/img/blog_screenshot.png b/src/img/blog_screenshot.png new file mode 100644 index 00000000..3c52a0eb Binary files /dev/null and b/src/img/blog_screenshot.png differ diff --git a/src/img/blog_screenshot.webp b/src/img/blog_screenshot.webp new file mode 100644 index 00000000..b5db54f6 Binary files /dev/null and b/src/img/blog_screenshot.webp differ diff --git a/src/img/colorPicker/slide0.webp b/src/img/colorPicker/slide0.webp new file mode 100644 index 00000000..8f6fb0c2 Binary files /dev/null and b/src/img/colorPicker/slide0.webp differ diff --git a/src/img/colorPicker/slide1.webp b/src/img/colorPicker/slide1.webp new file mode 100644 index 00000000..7cec5743 Binary files /dev/null and b/src/img/colorPicker/slide1.webp differ diff --git a/src/img/colorPicker/slide2.webp b/src/img/colorPicker/slide2.webp new file mode 100644 index 00000000..ebaf97a3 Binary files /dev/null and b/src/img/colorPicker/slide2.webp differ diff --git a/src/img/colorPicker/slide3.webp b/src/img/colorPicker/slide3.webp new file mode 100644 index 00000000..998748cd Binary files /dev/null and b/src/img/colorPicker/slide3.webp differ diff --git a/src/img/colorPicker/slide4.webp b/src/img/colorPicker/slide4.webp new file mode 100644 index 00000000..afc04e4a Binary files /dev/null and b/src/img/colorPicker/slide4.webp differ diff --git a/src/img/colorPicker/slide5.webp b/src/img/colorPicker/slide5.webp new file mode 100644 index 00000000..fa354396 Binary files /dev/null and b/src/img/colorPicker/slide5.webp differ diff --git a/src/img/colorPicker/thumbnail.png b/src/img/colorPicker/thumbnail.png new file mode 100644 index 00000000..8c8a73ed Binary files /dev/null and b/src/img/colorPicker/thumbnail.png differ diff --git a/src/img/colorPicker/thumbnail.webp b/src/img/colorPicker/thumbnail.webp new file mode 100644 index 00000000..b5debc85 Binary files /dev/null and b/src/img/colorPicker/thumbnail.webp differ diff --git a/src/img/colorPicker/thumbnail_860x611.png b/src/img/colorPicker/thumbnail_860x611.png new file mode 100644 index 00000000..b470449a Binary files /dev/null and b/src/img/colorPicker/thumbnail_860x611.png differ diff --git a/src/img/dashboard_minimal.png b/src/img/dashboard_minimal.png deleted file mode 100644 index c9c83393..00000000 Binary files a/src/img/dashboard_minimal.png and /dev/null differ diff --git a/src/img/dashboard_minimal.webp b/src/img/dashboard_minimal.webp new file mode 100644 index 00000000..72085c05 Binary files /dev/null and b/src/img/dashboard_minimal.webp differ diff --git a/src/img/game-tracker.png b/src/img/game-tracker.png new file mode 100644 index 00000000..eed294b1 Binary files /dev/null and b/src/img/game-tracker.png differ diff --git a/src/img/game-tracker.webp b/src/img/game-tracker.webp new file mode 100644 index 00000000..c6b9ad11 Binary files /dev/null and b/src/img/game-tracker.webp differ diff --git a/src/img/jolicoeur-blog.svg b/src/img/jolicoeur-blog.svg new file mode 100644 index 00000000..72095f7e --- /dev/null +++ b/src/img/jolicoeur-blog.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/linkedin_card.png b/src/img/linkedin_card.png deleted file mode 100644 index 6b4686f1..00000000 Binary files a/src/img/linkedin_card.png and /dev/null differ diff --git a/src/img/my-mtg-app.png b/src/img/my-mtg-app.png new file mode 100644 index 00000000..5866461c Binary files /dev/null and b/src/img/my-mtg-app.png differ diff --git a/src/img/my-mtg-app.webp b/src/img/my-mtg-app.webp new file mode 100644 index 00000000..06f3e4b7 Binary files /dev/null and b/src/img/my-mtg-app.webp differ diff --git a/src/img/portfolio/Slide0.webp b/src/img/portfolio/Slide0.webp new file mode 100644 index 00000000..504cf468 Binary files /dev/null and b/src/img/portfolio/Slide0.webp differ diff --git a/src/img/portfolio/Slide1.webp b/src/img/portfolio/Slide1.webp new file mode 100644 index 00000000..485e6592 Binary files /dev/null and b/src/img/portfolio/Slide1.webp differ diff --git a/src/img/portfolio/Slide10.webp b/src/img/portfolio/Slide10.webp new file mode 100644 index 00000000..d46298af Binary files /dev/null and b/src/img/portfolio/Slide10.webp differ diff --git a/src/img/portfolio/Slide11.webp b/src/img/portfolio/Slide11.webp new file mode 100644 index 00000000..91593b63 Binary files /dev/null and b/src/img/portfolio/Slide11.webp differ diff --git a/src/img/portfolio/Slide12.webp b/src/img/portfolio/Slide12.webp new file mode 100644 index 00000000..5b92a244 Binary files /dev/null and b/src/img/portfolio/Slide12.webp differ diff --git a/src/img/portfolio/Slide13.webp b/src/img/portfolio/Slide13.webp new file mode 100644 index 00000000..558d909b Binary files /dev/null and b/src/img/portfolio/Slide13.webp differ diff --git a/src/img/portfolio/Slide14.webp b/src/img/portfolio/Slide14.webp new file mode 100644 index 00000000..c64f674a Binary files /dev/null and b/src/img/portfolio/Slide14.webp differ diff --git a/src/img/portfolio/Slide2-5.webp b/src/img/portfolio/Slide2-5.webp new file mode 100644 index 00000000..8b81228b Binary files /dev/null and b/src/img/portfolio/Slide2-5.webp differ diff --git a/src/img/portfolio/Slide2.webp b/src/img/portfolio/Slide2.webp new file mode 100644 index 00000000..b57ddf13 Binary files /dev/null and b/src/img/portfolio/Slide2.webp differ diff --git a/src/img/portfolio/Slide3.webp b/src/img/portfolio/Slide3.webp new file mode 100644 index 00000000..6f4dc04a Binary files /dev/null and b/src/img/portfolio/Slide3.webp differ diff --git a/src/img/portfolio/Slide4.webp b/src/img/portfolio/Slide4.webp new file mode 100644 index 00000000..14375ad3 Binary files /dev/null and b/src/img/portfolio/Slide4.webp differ diff --git a/src/img/portfolio/Slide5.webp b/src/img/portfolio/Slide5.webp new file mode 100644 index 00000000..9bb125e5 Binary files /dev/null and b/src/img/portfolio/Slide5.webp differ diff --git a/src/img/portfolio/Slide6.webp b/src/img/portfolio/Slide6.webp new file mode 100644 index 00000000..5fb725ae Binary files /dev/null and b/src/img/portfolio/Slide6.webp differ diff --git a/src/img/portfolio/Slide7.webp b/src/img/portfolio/Slide7.webp new file mode 100644 index 00000000..77889cfd Binary files /dev/null and b/src/img/portfolio/Slide7.webp differ diff --git a/src/img/portfolio/Slide8.webp b/src/img/portfolio/Slide8.webp new file mode 100644 index 00000000..62cde97d Binary files /dev/null and b/src/img/portfolio/Slide8.webp differ diff --git a/src/img/rh_integration.webp b/src/img/rh_integration.webp new file mode 100644 index 00000000..680a12ef Binary files /dev/null and b/src/img/rh_integration.webp differ diff --git a/src/img/task-it_product.webp b/src/img/task-it_product.webp new file mode 100644 index 00000000..b0412da9 Binary files /dev/null and b/src/img/task-it_product.webp differ diff --git a/src/img/task-it_task-details_mockup1.webp b/src/img/task-it_task-details_mockup1.webp new file mode 100644 index 00000000..321d6565 Binary files /dev/null and b/src/img/task-it_task-details_mockup1.webp differ diff --git a/src/img/task-it_task-details_mockup2.webp b/src/img/task-it_task-details_mockup2.webp new file mode 100644 index 00000000..016889c7 Binary files /dev/null and b/src/img/task-it_task-details_mockup2.webp differ diff --git a/src/img/task-it_task-details_mockup3.webp b/src/img/task-it_task-details_mockup3.webp new file mode 100644 index 00000000..c00d45cc Binary files /dev/null and b/src/img/task-it_task-details_mockup3.webp differ diff --git a/src/img/task-it_task-details_mockup4.webp b/src/img/task-it_task-details_mockup4.webp new file mode 100644 index 00000000..2449aaf5 Binary files /dev/null and b/src/img/task-it_task-details_mockup4.webp differ diff --git a/src/img/task-it_task-details_wireframe.webp b/src/img/task-it_task-details_wireframe.webp new file mode 100644 index 00000000..685eb17e Binary files /dev/null and b/src/img/task-it_task-details_wireframe.webp differ diff --git a/src/img/task-it_thumbnail.png b/src/img/task-it_thumbnail.png new file mode 100644 index 00000000..909a1b90 Binary files /dev/null and b/src/img/task-it_thumbnail.png differ diff --git a/src/img/task-it_thumbnail.webp b/src/img/task-it_thumbnail.webp new file mode 100644 index 00000000..95ebdc88 Binary files /dev/null and b/src/img/task-it_thumbnail.webp differ diff --git a/src/img/task-it_user-flow.webp b/src/img/task-it_user-flow.webp new file mode 100644 index 00000000..9a56c2cd Binary files /dev/null and b/src/img/task-it_user-flow.webp differ diff --git a/src/img/task-it_user-states.webp b/src/img/task-it_user-states.webp new file mode 100644 index 00000000..019324e6 Binary files /dev/null and b/src/img/task-it_user-states.webp differ diff --git a/src/img/task-it_user-survey.webp b/src/img/task-it_user-survey.webp new file mode 100644 index 00000000..d1c67533 Binary files /dev/null and b/src/img/task-it_user-survey.webp differ diff --git a/src/img/thumbnail_PatternFly.webp b/src/img/thumbnail_PatternFly.webp new file mode 100644 index 00000000..2c154478 Binary files /dev/null and b/src/img/thumbnail_PatternFly.webp differ diff --git a/src/img/thumbnail_RHDM.webp b/src/img/thumbnail_RHDM.webp new file mode 100644 index 00000000..e8bd8e0e Binary files /dev/null and b/src/img/thumbnail_RHDM.webp differ diff --git a/src/img/thumbnail_kubevirtio.webp b/src/img/thumbnail_kubevirtio.webp new file mode 100644 index 00000000..ea8e36fb Binary files /dev/null and b/src/img/thumbnail_kubevirtio.webp differ diff --git a/src/js/beer.min.js b/src/js/beer.min.js new file mode 100644 index 00000000..7e5c1b84 --- /dev/null +++ b/src/js/beer.min.js @@ -0,0 +1 @@ +const V=[];function S(){return window==null?void 0:window.matchMedia("(pointer: coarse)").matches}function lt(){return window==null?void 0:window.matchMedia("(prefers-color-scheme: dark)").matches}async function W(t){await new Promise(n=>setTimeout(n,t))}function ft(){return"fxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{const n=Math.random()*16|0;return(t==="x"?n:n&3|8).toString(16)})}function h(t,n){try{return typeof t=="string"?(n??document).querySelector(t):t}catch{return null}}function u(t,n){try{return typeof t=="string"?(n??document).querySelectorAll(t):t??V}catch{return V}}function a(t,n){return(t==null?void 0:t.classList.contains(n))??!1}function y(t,n){var e;return((e=t==null?void 0:t.tagName)==null?void 0:e.toLowerCase())===n}function T(t,n){var e;return((e=t==null?void 0:t.type)==null?void 0:e.toLowerCase())===n}function g(t,n){if(t instanceof NodeList)for(let e=0;e label");for(let n=0;n input:not([type=file], [type=color], [type=range])");for(let n=0;n select");for(let n=0;n input[type=file]");for(let n=0;n input[type=color]");for(let n=0;n textarea");for(let n=0;ni.name).join(", "):"",e.readOnly=!0,o(e,"keydown",kt,!1),L(e))}function q(t,n){if((n==null?void 0:n.key)==="Enter"){const i=O(t);if(!T(i,"color"))return;i.click();return}const e=F(t);T(e,"text")&&(e.readOnly=!0,e.value=t.value,o(e,"keydown",mt,!1),L(e))}function Y(t){X(t);const n=v(t);n.removeAttribute("style"),a(n,"min")&&n.style.setProperty("--_size",`${Math.min(192,Math.max(t.scrollHeight,n.offsetHeight))}px`)}function Mt(){Tt(),Lt(),At(),Et(),St(),Dt(),It()}function H(t){const n=t.target;!y(n,"input")&&!y(n,"select")||(n.type==="range"?(n.focus(),Q(n)):G())}function Pt(t){if(!S())return;const n=t.target,e=v(n);a(e,"vertical")&&document.body.classList.add("no-scroll")}function _t(t){if(!S())return;const n=t.target,e=v(n);a(e,"vertical")&&document.body.classList.remove("no-scroll")}function G(){const t=document.body,n=u(".slider > input[type=range]");n.length?o(t,"input",H,!1):_(t,"input",H,!1);for(let e=0;e1&&(f=Math.abs(r[1]-r[0]),b=r[1]>r[0]?r[0]:r[1],A=100-b-f,w>k&&(k=l[1]||0,w=l[0])),n.style.setProperty("--_start",`${b}%`),n.style.setProperty("--_end",`${A}%`),n.style.setProperty("--_value1",`'${k}'`),n.style.setProperty("--_value2",`'${w}'`)}function Ft(){G()}const d={light:"",dark:""};function P(){var t;return(t=document==null?void 0:document.body)!=null&&t.classList.contains("dark")?"dark":"light"}function $t(){if(d.light&&d.dark)return d;const t=document.body,n=document.createElement("body");n.className="light",t.appendChild(n);const e=document.createElement("body");e.className="dark",t.appendChild(e);const i=getComputedStyle(n),s=getComputedStyle(e),c=["--primary","--on-primary","--primary-container","--on-primary-container","--secondary","--on-secondary","--secondary-container","--on-secondary-container","--tertiary","--on-tertiary","--tertiary-container","--on-tertiary-container","--error","--on-error","--error-container","--on-error-container","--background","--on-background","--surface","--on-surface","--surface-variant","--on-surface-variant","--outline","--outline-variant","--shadow","--scrim","--inverse-surface","--inverse-on-surface","--inverse-primary","--surface-dim","--surface-bright","--surface-container-lowest","--surface-container-low","--surface-container","--surface-container-high","--surface-container-highest"];for(let r=0,l=c.length;r{const c=r=>{let l="";for(let f=0,b=Object.keys(r),A=b.length;f{const n=h(".field > input",t);n?n.focus():t.focus()},90)}function ot(t,n,e){D&&clearTimeout(D),D=setTimeout(()=>{o(document.body,"click",it),y(document.activeElement,"input")||$();const i=a(n,"active"),s=(e==null?void 0:e.target)===t,c=!!t.closest("menu");if(!i&&c||i&&s){p(n,"active");return}p(u("menu.active"),"active"),g(n,"active"),Bt(n)},90)}let C;function jt(t){const n=t.currentTarget;p(n,"active"),C&&clearTimeout(C)}function Kt(t,n){$();const e=u(".snackbar.active");for(let i=0;i{p(t,"active")},n??6e3))}function Ut(t){const n=v(t);n&&p(u(":scope > .page",n),"active"),g(t,"active")}function Vt(t){Ht(t)}function Ht(t){const n=t.currentTarget,e=n.getBoundingClientRect(),i=Math.max(e.width,e.height),s=i/2,c=t.clientX-e.left-s,r=t.clientY-e.top-s,l=document.createElement("div");l.className="ripple-js";const f=document.createElement("div");f.style.inlineSize=f.style.blockSize=`${i}px`,f.style.left=`${c}px`,f.style.top=`${r}px`,f.addEventListener("animationend",()=>{l.remove()}),l.appendChild(f),n.appendChild(l)}function Zt(){const t=u(".slow-ripple, .ripple, .fast-ripple");for(let n=0;nawait ct(),180)}async function B(t,n,e,i){if(!n&&(n=h(t.getAttribute("data-ui")),!n)){t.classList.toggle("active");return}if(ht(t),y(n,"dialog")){await et(t,n);return}if(y(n,"menu")){ot(t,n,i);return}if(a(n,"snackbar")){Kt(n,e);return}if(a(n,"page")){Ut(n);return}if(a(n,"active")){p(t,"active"),p(n,"active");return}g(n,"active")}function Wt(t){B(t.currentTarget,null,null,t)}function Xt(t){t.key==="Enter"&&B(t.currentTarget,null,null,t)}function rt(){m.ui||M||!m.MutationObserver||(M=new MutationObserver(Z),M.observe(document.body,{childList:!0,subtree:!0}),Z())}function Yt(){const t=u("[data-ui]");for(let n=0,e=t.length;nlight_mode' : 'dark_mode'; + // use an aria-label if you are omitting text on the button + // and using a sun/moon icon, for example + buttonEl.setAttribute("aria-label", newCta); + buttonEl.innerHTML = newCta; +} + +/** +* Utility function to update the theme setting on the html tag +*/ +function updateThemeOnHtmlEl({ theme }) { + document.querySelector("body").setAttribute("class", theme); +} + + +/** +* On page load: +*/ + +/** +* 1. Grab what we need from the DOM and system settings on page load +*/ +const button = document.querySelector("[color-theme-toggle]"); +const localStorageTheme = localStorage.getItem("theme"); +const systemSettingDark = window.matchMedia("(prefers-color-scheme: dark)"); + +/** +* 2. Work out the current site settings +*/ +let currentThemeSetting = calculateSettingAsThemeString({ localStorageTheme, systemSettingDark }); + +/** +* 3. Update the theme setting and button text accoridng to current settings +*/ +updateButton({ buttonEl: button, isDark: currentThemeSetting === "dark" }); +updateThemeOnHtmlEl({ theme: currentThemeSetting }); + +/** +* 4. Add an event listener to toggle the theme +*/ +button.addEventListener("click", (event) => { + const newTheme = currentThemeSetting === "dark" ? "light" : "dark"; + + localStorage.setItem("theme", newTheme); + updateButton({ buttonEl: button, isDark: newTheme === "dark" }); + updateThemeOnHtmlEl({ theme: newTheme }); + + currentThemeSetting = newTheme; +}); diff --git a/src/js/prism.js b/src/js/prism.js deleted file mode 100644 index 69161924..00000000 --- a/src/js/prism.js +++ /dev/null @@ -1,11 +0,0 @@ -/* PrismJS 1.29.0 -https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+markdown+scss&plugins=show-language+toolbar */ -var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(e){var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,r={},a={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof i?new i(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/=g.reach);A+=w.value.length,w=w.next){var E=w.value;if(n.length>e.length)return;if(!(E instanceof i)){var P,L=1;if(y){if(!(P=l(b,A,e,m))||P.index>=e.length)break;var S=P.index,O=P.index+P[0].length,j=A;for(j+=w.value.length;S>=j;)j+=(w=w.next).value.length;if(A=j-=w.value.length,w.value instanceof i)continue;for(var C=w;C!==n.tail&&(jg.reach&&(g.reach=W);var z=w.prev;if(_&&(z=u(n,z,_),A+=_.length),c(n,z,L),w=u(n,z,new i(f,p?a.tokenize(N,p):N,k,N)),M&&u(n,w,M),L>1){var I={cause:f+","+d,reach:W};o(e,n,t,w.prev,A,I),g&&I.reach>g.reach&&(g.reach=I.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function u(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function c(e,n,t){for(var r=n.next,a=0;a"+i.content+""},!e.document)return e.addEventListener?(a.disableWorkerMessageHandler||e.addEventListener("message",(function(n){var t=JSON.parse(n.data),r=t.language,i=t.code,l=t.immediateClose;e.postMessage(a.highlight(i,a.languages[r],r)),l&&e.close()}),!1),a):a;var g=a.util.currentScript();function f(){a.manual||a.highlightAll()}if(g&&(a.filename=g.src,g.hasAttribute("data-manual")&&(a.manual=!0)),!a.manual){var h=document.readyState;"loading"===h||"interactive"===h&&g&&g.defer?document.addEventListener("DOMContentLoaded",f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16)}return a}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); -Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",(function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))})),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={"included-cdata":{pattern://i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,(function(){return a})),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml; -!function(s){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:[^;{\\s\"']|\\s+(?!\\s)|"+e.source+")*?(?:;|(?=\\s*\\{))"),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism); -Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}; -Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp("(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])"),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp("((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/(?:(?:\\[(?:[^\\]\\\\\r\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}|(?:\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\s|/\\*(?:[^*]|\\*(?!/))*\\*/)*(?:$|[\r\n,.;:})\\]]|//))"),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),Prism.languages.js=Prism.languages.javascript; -!function(n){function e(n){return n=n.replace(//g,(function(){return"(?:\\\\.|[^\\\\\n\r]|(?:\n|\r\n?)(?![\r\n]))"})),RegExp("((?:^|[^\\\\])(?:\\\\{2})*)(?:"+n+")")}var t="(?:\\\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\\\|\r\n`])+",a="\\|?__(?:\\|__)+\\|?(?:(?:\n|\r\n?)|(?![^]))".replace(/__/g,(function(){return t})),i="\\|?[ \t]*:?-{3,}:?[ \t]*(?:\\|[ \t]*:?-{3,}:?[ \t]*)+\\|?(?:\n|\r\n?)";n.languages.markdown=n.languages.extend("markup",{}),n.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:n.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+i+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+i+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(t),inside:n.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+i+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(t),alias:"important",inside:n.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:e("\\b__(?:(?!_)|_(?:(?!_))+_)+__\\b|\\*\\*(?:(?!\\*)|\\*(?:(?!\\*))+\\*)+\\*\\*"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:e("\\b_(?:(?!_)|__(?:(?!_))+__)+_\\b|\\*(?:(?!\\*)|\\*\\*(?:(?!\\*))+\\*\\*)+\\*"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:e("(~~?)(?:(?!~))+\\2"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:e('!?\\[(?:(?!\\]))+\\](?:\\([^\\s)]+(?:[\t ]+"(?:\\\\.|[^"\\\\])*")?\\)|[ \t]?\\[(?:(?!\\]))+\\])'),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(e){["url","bold","italic","strike","code-snippet"].forEach((function(t){e!==t&&(n.languages.markdown[e].inside.content.inside[t]=n.languages.markdown[t])}))})),n.hooks.add("after-tokenize",(function(n){"markdown"!==n.language&&"md"!==n.language||function n(e){if(e&&"string"!=typeof e)for(var t=0,a=e.length;t",quot:'"'},l=String.fromCodePoint||String.fromCharCode;n.languages.md=n.languages.markdown}(Prism); -Prism.languages.scss=Prism.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),Prism.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),Prism.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),Prism.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),Prism.languages.scss.atrule.inside.rest=Prism.languages.scss; -!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var e=[],t={},n=function(){};Prism.plugins.toolbar={};var a=Prism.plugins.toolbar.registerButton=function(n,a){var r;r="function"==typeof a?a:function(e){var t;return"function"==typeof a.onClick?((t=document.createElement("button")).type="button",t.addEventListener("click",(function(){a.onClick.call(this,e)}))):"string"==typeof a.url?(t=document.createElement("a")).href=a.url:t=document.createElement("span"),a.className&&t.classList.add(a.className),t.textContent=a.text,t},n in t?console.warn('There is a button with the key "'+n+'" registered already.'):e.push(t[n]=r)},r=Prism.plugins.toolbar.hook=function(a){var r=a.element.parentNode;if(r&&/pre/i.test(r.nodeName)&&!r.parentNode.classList.contains("code-toolbar")){var o=document.createElement("div");o.classList.add("code-toolbar"),r.parentNode.insertBefore(o,r),o.appendChild(r);var i=document.createElement("div");i.classList.add("toolbar");var l=e,d=function(e){for(;e;){var t=e.getAttribute("data-toolbar-order");if(null!=t)return(t=t.trim()).length?t.split(/\s*,\s*/g):[];e=e.parentElement}}(a.element);d&&(l=d.map((function(e){return t[e]||n}))),l.forEach((function(e){var t=e(a);if(t){var n=document.createElement("div");n.classList.add("toolbar-item"),n.appendChild(t),i.appendChild(n)}})),o.appendChild(i)}};a("label",(function(e){var t=e.element.parentNode;if(t&&/pre/i.test(t.nodeName)&&t.hasAttribute("data-label")){var n,a,r=t.getAttribute("data-label");try{a=document.querySelector("template#"+r)}catch(e){}return a?n=a.content:(t.hasAttribute("data-url")?(n=document.createElement("a")).href=t.getAttribute("data-url"):n=document.createElement("span"),n.textContent=r),n}})),Prism.hooks.add("complete",r)}}(); -!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document)if(Prism.plugins.toolbar){var e={none:"Plain text",plain:"Plain text",plaintext:"Plain text",text:"Plain text",txt:"Plain text",html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",rss:"RSS",css:"CSS",clike:"C-like",js:"JavaScript",abap:"ABAP",abnf:"ABNF",al:"AL",antlr4:"ANTLR4",g4:"ANTLR4",apacheconf:"Apache Configuration",apl:"APL",aql:"AQL",ino:"Arduino",arff:"ARFF",armasm:"ARM Assembly","arm-asm":"ARM Assembly",art:"Arturo",asciidoc:"AsciiDoc",adoc:"AsciiDoc",aspnet:"ASP.NET (C#)",asm6502:"6502 Assembly",asmatmel:"Atmel AVR Assembly",autohotkey:"AutoHotkey",autoit:"AutoIt",avisynth:"AviSynth",avs:"AviSynth","avro-idl":"Avro IDL",avdl:"Avro IDL",awk:"AWK",gawk:"GAWK",sh:"Shell",basic:"BASIC",bbcode:"BBcode",bbj:"BBj",bnf:"BNF",rbnf:"RBNF",bqn:"BQN",bsl:"BSL (1C:Enterprise)",oscript:"OneScript",csharp:"C#",cs:"C#",dotnet:"C#",cpp:"C++",cfscript:"CFScript",cfc:"CFScript",cil:"CIL",cilkc:"Cilk/C","cilk-c":"Cilk/C",cilkcpp:"Cilk/C++","cilk-cpp":"Cilk/C++",cilk:"Cilk/C++",cmake:"CMake",cobol:"COBOL",coffee:"CoffeeScript",conc:"Concurnas",csp:"Content-Security-Policy","css-extras":"CSS Extras",csv:"CSV",cue:"CUE",dataweave:"DataWeave",dax:"DAX",django:"Django/Jinja2",jinja2:"Django/Jinja2","dns-zone-file":"DNS zone file","dns-zone":"DNS zone file",dockerfile:"Docker",dot:"DOT (Graphviz)",gv:"DOT (Graphviz)",ebnf:"EBNF",editorconfig:"EditorConfig",ejs:"EJS",etlua:"Embedded Lua templating",erb:"ERB","excel-formula":"Excel Formula",xlsx:"Excel Formula",xls:"Excel Formula",fsharp:"F#","firestore-security-rules":"Firestore security rules",ftl:"FreeMarker Template Language",gml:"GameMaker Language",gamemakerlanguage:"GameMaker Language",gap:"GAP (CAS)",gcode:"G-code",gdscript:"GDScript",gedcom:"GEDCOM",gettext:"gettext",po:"gettext",glsl:"GLSL",gn:"GN",gni:"GN","linker-script":"GNU Linker Script",ld:"GNU Linker Script","go-module":"Go module","go-mod":"Go module",graphql:"GraphQL",hbs:"Handlebars",hs:"Haskell",hcl:"HCL",hlsl:"HLSL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam","icu-message-format":"ICU Message Format",idr:"Idris",ignore:".ignore",gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore",inform7:"Inform 7",javadoc:"JavaDoc",javadoclike:"JavaDoc-like",javastacktrace:"Java stack trace",jq:"JQ",jsdoc:"JSDoc","js-extras":"JS Extras",json:"JSON",webmanifest:"Web App Manifest",json5:"JSON5",jsonp:"JSONP",jsstacktrace:"JS stack trace","js-templates":"JS Templates",keepalived:"Keepalived Configure",kts:"Kotlin Script",kt:"Kotlin",kumir:"KuMir (КуМир)",kum:"KuMir (КуМир)",latex:"LaTeX",tex:"TeX",context:"ConTeXt",lilypond:"LilyPond",ly:"LilyPond",emacs:"Lisp",elisp:"Lisp","emacs-lisp":"Lisp",llvm:"LLVM IR",log:"Log file",lolcode:"LOLCODE",magma:"Magma (CAS)",md:"Markdown","markup-templating":"Markup templating",matlab:"MATLAB",maxscript:"MAXScript",mel:"MEL",metafont:"METAFONT",mongodb:"MongoDB",moon:"MoonScript",n1ql:"N1QL",n4js:"N4JS",n4jsd:"N4JS","nand2tetris-hdl":"Nand To Tetris HDL",naniscript:"Naninovel Script",nani:"Naninovel Script",nasm:"NASM",neon:"NEON",nginx:"nginx",nsis:"NSIS",objectivec:"Objective-C",objc:"Objective-C",ocaml:"OCaml",opencl:"OpenCL",openqasm:"OpenQasm",qasm:"OpenQasm",parigp:"PARI/GP",objectpascal:"Object Pascal",psl:"PATROL Scripting Language",pcaxis:"PC-Axis",px:"PC-Axis",peoplecode:"PeopleCode",pcode:"PeopleCode",php:"PHP",phpdoc:"PHPDoc","php-extras":"PHP Extras","plant-uml":"PlantUML",plantuml:"PlantUML",plsql:"PL/SQL",powerquery:"PowerQuery",pq:"PowerQuery",mscript:"PowerQuery",powershell:"PowerShell",promql:"PromQL",properties:".properties",protobuf:"Protocol Buffers",purebasic:"PureBasic",pbfasm:"PureBasic",purs:"PureScript",py:"Python",qsharp:"Q#",qs:"Q#",q:"Q (kdb+ database)",qml:"QML",rkt:"Racket",cshtml:"Razor C#",razor:"Razor C#",jsx:"React JSX",tsx:"React TSX",renpy:"Ren'py",rpy:"Ren'py",res:"ReScript",rest:"reST (reStructuredText)",robotframework:"Robot Framework",robot:"Robot Framework",rb:"Ruby",sas:"SAS",sass:"Sass (Sass)",scss:"Sass (SCSS)","shell-session":"Shell session","sh-session":"Shell session",shellsession:"Shell session",sml:"SML",smlnj:"SML/NJ",solidity:"Solidity (Ethereum)",sol:"Solidity (Ethereum)","solution-file":"Solution file",sln:"Solution file",soy:"Soy (Closure Template)",sparql:"SPARQL",rq:"SPARQL","splunk-spl":"Splunk SPL",sqf:"SQF: Status Quo Function (Arma 3)",sql:"SQL",stata:"Stata Ado",iecst:"Structured Text (IEC 61131-3)",supercollider:"SuperCollider",sclang:"SuperCollider",systemd:"Systemd configuration file","t4-templating":"T4 templating","t4-cs":"T4 Text Templates (C#)",t4:"T4 Text Templates (C#)","t4-vb":"T4 Text Templates (VB)",tap:"TAP",tt2:"Template Toolkit 2",toml:"TOML",trickle:"trickle",troy:"troy",trig:"TriG",ts:"TypeScript",tsconfig:"TSConfig",uscript:"UnrealScript",uc:"UnrealScript",uorazor:"UO Razor Script",uri:"URI",url:"URL",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",vba:"VBA",vb:"Visual Basic",wasm:"WebAssembly","web-idl":"Web IDL",webidl:"Web IDL",wgsl:"WGSL",wiki:"Wiki markup",wolfram:"Wolfram language",nb:"Mathematica Notebook",wl:"Wolfram language",xeoracube:"XeoraCube","xml-doc":"XML doc (.net)",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML",yml:"YAML",yang:"YANG"};Prism.plugins.toolbar.registerButton("show-language",(function(a){var t=a.element.parentNode;if(t&&/pre/i.test(t.nodeName)){var o,i=t.getAttribute("data-language")||e[a.language]||((o=a.language)?(o.substring(0,1).toUpperCase()+o.substring(1)).replace(/s(?=cript)/,"S"):o);if(i){var s=document.createElement("span");return s.textContent=i,s}}}))}else console.warn("Show Languages plugin loaded before Toolbar plugin.")}(); diff --git a/src/js/speedlify-score.js b/src/js/speedlify-score.js new file mode 100644 index 00000000..4ea30d3e --- /dev/null +++ b/src/js/speedlify-score.js @@ -0,0 +1,260 @@ +class SpeedlifyUrlStore { + constructor() { + this.fetches = {}; + this.responses = {}; + this.urls = {}; + } + + static normalizeUrl(speedlifyUrl, path) { + let host = `${speedlifyUrl}${speedlifyUrl.endsWith("/") ? "" : "/"}` + return host + (path.startsWith("/") ? path.substr(1) : path); + } + + async fetchFromApi(apiUrl) { + if(!this.fetches[apiUrl]) { + this.fetches[apiUrl] = fetch(apiUrl); + } + + let response = await this.fetches[apiUrl]; + if(!this.responses[apiUrl]) { + this.responses[apiUrl] = response.json(); + } + let json = await this.responses[apiUrl]; + return json; + } + + async fetchHash(speedlifyUrl, url) { + if(this.urls[speedlifyUrl]) { + return this.urls[speedlifyUrl][url] ? this.urls[speedlifyUrl][url].hash : false; + } + + let apiUrl = SpeedlifyUrlStore.normalizeUrl(speedlifyUrl, "api/urls.json"); + let json = await this.fetchFromApi(apiUrl); + + return json[url] ? json[url].hash : false; + } + + async fetchData(speedlifyUrl, hash) { + let apiUrl = SpeedlifyUrlStore.normalizeUrl(speedlifyUrl, `api/${hash}.json`); + return this.fetchFromApi(apiUrl); + } +} + +// Global store +const urlStore = new SpeedlifyUrlStore(); + +class SpeedlifyScore extends HTMLElement { + static register(tagName) { + customElements.define(tagName || "speedlify-score", SpeedlifyScore); + } + + static attrs = { + url: "url", + speedlifyUrl: "speedlify-url", + hash: "hash", + rawData: "raw-data", + requests: "requests", + weight: "weight", + rank: "rank", + rankChange: "rank-change", + score: "score", + } + + static css = ` +:host { + --_circle: var(--speedlify-circle); + display: flex; + align-items: center; + gap: 0.375em; /* 6px /16 */ +} +.circle { + font-size: 0.8125em; /* 13px /16 */ + min-width: 2.6em; + height: 2.6em; + line-height: 1; + display: inline-flex; + align-items: center; + justify-content: center; + border-radius: 50%; + border: 0.15384615em solid currentColor; /* 2px /13 */ + color: var(--_circle, #666); +} +.circle-good { + color: var(--_circle, #088645); + border-color: var(--_circle, #0cce6b); +} +.circle-ok { + color: var(--_circle, #ffa400); + border-color: var(--_circle, currentColor); +} +.circle-bad { + color: var(--_circle, #ff4e42); + border-color: var(--_circle, currentColor); +} +.meta { + display: flex; + align-items: center; + gap: 0.625em; /* 10px /16 */ +} +.circle + .meta { + margin-left: 0.25em; /* 4px /16 */ +} +.rank:before { + content: "Rank #"; +} +.rank-change:before { + line-height: 1; +} +.rank-change.up { + color: green; +} +.rank-change.up:before { + content: "⬆"; +} +.rank-change.down { + color: red; +} +.rank-change.down:before { + content: "⬇"; +} +`; + + connectedCallback() { + if (!("replaceSync" in CSSStyleSheet.prototype) || this.shadowRoot) { + return; + } + + this.speedlifyUrl = this.getAttribute(SpeedlifyScore.attrs.speedlifyUrl); + this.shorthash = this.getAttribute(SpeedlifyScore.attrs.hash); + this.rawData = this.getAttribute(SpeedlifyScore.attrs.rawData); + this.url = this.getAttribute(SpeedlifyScore.attrs.url) || window.location.href; + + if(!this.rawData && !this.speedlifyUrl) { + console.error(`Missing \`${SpeedlifyScore.attrs.speedlifyUrl}\` attribute:`, this); + return; + } + + // async + this.init(); + } + + _initTemplate(data, forceRerender = false) { + if(this.shadowRoot && !forceRerender) { + return; + } + if(this.shadowRoot) { + this.shadowRoot.innerHTML = this.render(data); + return; + } + + let shadowroot = this.attachShadow({ mode: "open" }); + let sheet = new CSSStyleSheet(); + sheet.replaceSync(SpeedlifyScore.css); + shadowroot.adoptedStyleSheets = [sheet]; + + let template = document.createElement("template"); + template.innerHTML = this.render(data); + shadowroot.appendChild(template.content.cloneNode(true)); + } + + async init() { + if(this.rawData) { + let data = JSON.parse(this.rawData); + this.setDateAttributes(data); + this._initTemplate(data); + return; + } + + let hash = this.shorthash; + let forceRerender = false; + if(!hash) { + this._initTemplate(); // skeleton render + forceRerender = true; + + // It’s much faster if you supply a `hash` attribute! + hash = await urlStore.fetchHash(this.speedlifyUrl, this.url); + } + + if(!hash) { + console.error( ` could not find hash for URL (${this.url}):`, this ); + return; + } + + // Hasn’t already rendered. + if(!forceRerender) { + this._initTemplate(); // skeleton render + forceRerender = true; + } + + let data = await urlStore.fetchData(this.speedlifyUrl, hash); + this.setDateAttributes(data); + + this._initTemplate(data, forceRerender); + } + + setDateAttributes(data) { + if(!("Intl" in window) || !Intl.DateTimeFormat || !data.timestamp) { + return; + } + const date = new Intl.DateTimeFormat().format(new Date(data.timestamp)); + this.setAttribute("title", `Results from ${date}`); + } + + getScoreClass(score) { + if(score === "" || score === undefined) { + return "circle"; + } + if(score < .5) { + return "circle circle-bad"; + } + if(score < .9) { + return "circle circle-ok"; + } + return "circle circle-good"; + } + + getScoreHtml(title, value = "") { + return `${value ? parseInt(value * 100, 10) : "…"}`; + } + + render(data = {}) { + let attrs = SpeedlifyScore.attrs; + let content = []; + + // no extra attributes + if(!this.hasAttribute(attrs.requests) && !this.hasAttribute(attrs.weight) && !this.hasAttribute(attrs.rank) && !this.hasAttribute(attrs.rankChange) || this.hasAttribute(attrs.score)) { + content.push(this.getScoreHtml("Performance", data.lighthouse?.performance)); + content.push(this.getScoreHtml("Accessibility", data.lighthouse?.accessibility)); + content.push(this.getScoreHtml("Best Practices", data.lighthouse?.bestPractices)); + content.push(this.getScoreHtml("SEO", data.lighthouse?.seo)); + } + + let meta = []; + let summarySplit = data.weight?.summary?.split(" • ") || []; + if(this.hasAttribute(attrs.requests) && summarySplit.length) { + meta.push(`${summarySplit[0]}`); + } + if(this.hasAttribute(attrs.weight) && summarySplit.length) { + meta.push(`${summarySplit[1]}`); + } + if(data.ranks?.cumulative) { + if(this.hasAttribute(attrs.rank)) { + let rankUrl = this.getAttribute("rank-url"); + meta.push(`<${rankUrl ? `a href="${rankUrl}"` : "span"} class="rank">${data.ranks?.cumulative}`); + } + if(this.hasAttribute(attrs.rankChange) && data.previousRanks) { + let change = data.previousRanks?.cumulative - data.ranks?.cumulative; + meta.push(`${change !== 0 ? Math.abs(change) : ""}`); + } + } + if(meta.length) { + content.push(`${meta.join("")}`) + } + + return content.join(""); + } +} + +if(("customElements" in window) && ("fetch" in window)) { + SpeedlifyScore.register(); +} \ No newline at end of file diff --git a/src/js/speedlify.js b/src/js/speedlify.js new file mode 100644 index 00000000..651c6db9 --- /dev/null +++ b/src/js/speedlify.js @@ -0,0 +1,11 @@ +const CacheAsset = require("@11ty/eleventy-cache-assets"); + +module.exports = async function() { + let url = "https://speedlify-aj.netlify.app/api/urls.json"; + let json = await CacheAsset(url, { + duration: "1w", + type: "json", + }); + + return json; +}; diff --git a/src/pages/Alfred/alfred.json b/src/pages/Alfred/alfred.json deleted file mode 100644 index 6b252dfb..00000000 --- a/src/pages/Alfred/alfred.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "layout": "page", - "permalink": "/alfred/{{ page.fileSlug }}/" -} diff --git a/src/pages/Alfred/workflows.md b/src/pages/Alfred/workflows.md deleted file mode 100644 index 0cc8133c..00000000 --- a/src/pages/Alfred/workflows.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Alfred Workflows" -date: git Last Modified -abbreviation: "alfred" -description: "A list of my favorite Alfred workflows" ---- - -# Alfred Workflows - -A list of my favorite [Alfred Workflows](https://www.alfredapp.com/workflows/), broken down by those that I have downloaded and those that I have created or modified. - -*Note: Requires the [Alfred Powerpack](https://www.alfredapp.com/powerpack/) to use.* - -## Downloaded -- [Alfred Web Searches](https://github.com/nikitavoloboev/alfred-web-searches#readme) - - Created by [nikitavoloboev on GitHub](https://github.com/nikitavoloboev) to use Alfred for searching the web. - -## Created / Modified -- New Obsidian - - Create a new note using [Obsidian](https://obsidian.md/). -- Start my day - - A workflow for starting my day. Open Microsoft Outlook, Firefox, and Slack. -- End my day - - A workflow to quickly end my day. Closes all applications and asks if I want to shut down my machine. diff --git a/src/pages/about.md b/src/pages/about.md index 0685d17f..5a181ea1 100644 --- a/src/pages/about.md +++ b/src/pages/about.md @@ -1,5 +1,5 @@ --- -layout: "markdown" +layout: markdown title: "About" date: git Last Modified abbreviation: "about" diff --git a/src/pages/archives/index.md b/src/pages/archives/index.md deleted file mode 100644 index e401287d..00000000 --- a/src/pages/archives/index.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Archived Pages" -date: git Last Modified -abbreviation: "Archives" -description: "" -eleventyNavigation: - key: archives - parent: - order: 1 ---- - -- [Town Selectman](/town-selectman) diff --git a/src/pages/connect.md b/src/pages/connect.md index 9e2294d7..398f74af 100644 --- a/src/pages/connect.md +++ b/src/pages/connect.md @@ -2,7 +2,7 @@ title: "Connect" abbreviation: "connect" date: git Last Modified -description: +description: "Reach out, let's connect" header: "Reach out, let's connect" ---
diff --git a/src/pages/credits/index.md b/src/pages/credits/index.md index 3aaed7da..8aa5632a 100644 --- a/src/pages/credits/index.md +++ b/src/pages/credits/index.md @@ -2,7 +2,9 @@ title: Credits date: git Last Modified layout: markdown +description: "Credits and callouts from building this site" readTime: false +tocBlock: true --- Giving credit where credit is due, this page is based off of the [Credits](https://raw.githubusercontent.com/LeaVerou/lea.verou.me/refs/heads/main/credits/index.md) page from [Lea Verou](https://lea.verou.me/). @@ -14,33 +16,24 @@ This site was built using [Eleventy](https://www.11ty.dev/), hosted on [Cloudfla ## Libraries - [Eleventy](https://www.11ty.dev/) +- [BeerCSS](https://www.beercss.com) - [Shoelace](https://shoelace.style/) -- [Bootstrap](https://getbootstrap.com/) ## Fonts ```css - :root { - --sl-font-sans: "Oswald", sans-serif; - --sl-font-mono: "Fira Mono", monospace; - --sl-font-serif: "Lato", sans-serif; - --bs-font-sans-serif: "Lato", serif; - } + --font: Inter, Roboto, "Helvetica Neue", "Arial Nova", "Nimbus Sans", "Noto Sans", Arial, sans-serif; + ``` -- [Oswald](https://fonts.google.com/specimen/Oswald) - - Headers, specified through general `` tags and CSS classes -- [Lato](https://fonts.google.com/specimen/Lato) - - Paragraphs, specified through general `

` tags and CSS classes -- [Fira Mono](https://fonts.google.com/specimen/Fira+Mono) - - Code blocks, specified through general `` tags and CSS classes +_These are the defaults that come with BeerCSS. They can be changed by following the [documentation](https://github.com/beercss/beercss/blob/main/docs/SETTINGS.md#fonts)_ ## Icons -A custom icon component ([icon-component.js](https://github.com/AdamJ/adamjolicoeur.com/blob/main/src/js/icon-component.js)) is used to render icons as web components with [Font Awesome](https://fontawesome.com/) as the preferred icon library. +As BeerCSS uses Material Symbols, I've swapped out previous custom icons to use the built-in options. -``` - +```css + --font-icon: "Material Symbols Outlined"; ``` ## Plugins @@ -54,6 +47,16 @@ A custom icon component ([icon-component.js](https://github.com/AdamJ/adamjolico - [markdown-it-highlightjs](https://github.com/11ty/eleventy-plugin-syntaxhighlight) - highlights code blocks at build time utilizing [PrismJS](https://prismjs.com/) syntax highlighting. - [eleventy-plugin-emoji-readtime](https://github.com/11tyrocks/eleventy-plugin-emoji-readtime) calculates the reading time of blog posts (i.e. any page using the `blog` layout) based on the number of words. A tag with the time to read is added to the top of a page where the FrontMatter has `readtime: true`. +## Performance Testing + +After reading Zach Leatherman's post on [adding lighthouse scores to a site's footer](https://www.zachleat.com/web/lighthouse-in-footer/), I decided to give it a go myself. I followed that up with Zach's other post on [using speedlify to continuously measure performance](https://www.zachleat.com/web/speedlify/). Both are great reads. + +Check out the latest speedlify scores: [https://speedlify-aj.netlify.app](https://speedlify-aj.netlify.app) + +- [performance-leaderboard](https://github.com/zachleat/performance-leaderboard) is a plugin to run lighthouse "scoring" against a set of urls to gauge who is the fastest. +- [Lighthouse Metrics](https://lighthouse-metrics.com) for gauging how two different versions of my site compare to one another. Helpful after pushing any updates to see what might have changed in "live" version, even after testing locally. +- [Lighthouse Report Diff Tool](https://googlechrome.github.io/lighthouse-ci/viewer/) upload your two reports (one before and one after any changes) to see the differences. + ## Tools - [VS Code](https://code.visualstudio.com/) diff --git a/src/pages/designs.md b/src/pages/designs.md index 058f0f20..a6c207a4 100644 --- a/src/pages/designs.md +++ b/src/pages/designs.md @@ -10,115 +10,386 @@ eleventyNavigation: --- -

-
-
-
-

Task-It!

-

One enterprise task management system to rule them all.

-
- the journey +
+
+
+
+
+
+ Thumbnail of Task It project screen +
+
Project One
+
Task-It!
+
+
+
+
+ +

One enterprise task management system to rule them all.

+ +
+
+
+
+
Project One
+
Task-It!
+

One enterprise task management system to rule them all.

+
+ +
+ +
+
+
+
+ Thumbnail of Task It project screen +
+
+ Thumbnail of project screen + Thumbnail of project screen +
+
+
-
+
-
-
-
- -
-
-
- Application Lifecycle Management thumbnail -
-
-

Application Lifecycle Management

-

A one-stop-shop for a team's planning and project lifecycle management.

- the journey +
+
+
+
+
+
+
+
Thumbnail of ALM project screen +
+
Project Two
+
Application Management
+
+
+
+
+ +

A one-stop-shop for a team's planning and project lifecycle management.

+ +
+
+
+
+
Project Two
+
Application Management
+

A one-stop-shop for a team's planning and project lifecycle management.

+
+ +
+ +
+
+
+
Thumbnail of ALM project screen +
+
Thumbnail of project screenThumbnail of project screen +
+
+
+
+
- +
- -
-
-
-

Customer Engagement App

-

End-to-end tracking of customer engagement and marketing campaigns.

- the journey -
-
- Customer Engagement App Dashboard thumbnail +
+
+
+
+
+
+
Thumbnail of Customer Engagement project screen +
+
Project Three
+
Customer Engagement
+
+
+
+
+ +

End-to-end tracking of customer engagement and marketing campaigns.

+ +
+
+
+
+
Project Three
+
Customer Engagement
+

End-to-end tracking of customer engagement and marketing campaigns.

+
+ +
+ +
+
+
+
Thumbnail of Customer Engagement project screen +
+
+
+
-
+ -
-
-
- Switchback Timetrak thumbnail -
-
-

Switchback TimeTrak

-

The goal of this redesign was to create a simplistic system to easily access recent log entries, active projects, and team calendars. From this dashboard, users can quickly see these items, in addition to providing quick navigation items for in-depth reporting.

-

- Sketch Bootstrap Font Awesome -

+
+
+
+
+
+
+
Thumbnail of Timetrak project screen +
+
Project Four
+
Switchback TimeTrak
+
+
+
+
+ +

The goal of this redesign was to create a simplistic system to easily access recent log entries, active projects, and team calendars. From this dashboard, users can quickly see these items, in addition to providing quick navigation items for in-depth reporting.

+ +
+
+
+
+
Project Four
+
Switchback TimeTrak
+

The goal of this redesign was to create a simplistic system to easily access recent log entries, active projects, and team calendars. From this dashboard, users can quickly see these items, in addition to providing quick navigation items for in-depth reporting.

+
+ +
+
+
+
Thumbnail of Timetrak project screen +
+
+
+
-
+ -
-
-
-

Structure Cloud

-

For this project, I was tasked with converting the UI of a COBOL application into something that would work with the modern web. The task was very challenging, in that one of the main requirements was to keep the layout as close to the original application as possible (in order to minimize the amount of relearning existing users would need to do), while also providing a clean UI that would attract new users to the platform.

-

- Sketch Font Awesome Visual Studio -

-
-
- Structure Cloud UI screenshot +
+
+
+
+
+
+
Thumbnail of demo screen +
+
Project Five
+
Structure Cloud
+
+
+
+
+ +

For this project, I was tasked with converting the UI of a COBOL application into something that would work with the modern web. The task was very challenging, in that one of the main requirements was to keep the layout as close to the original application as possible (in order to minimize the amount of relearning existing users would need to do), while also providing a clean UI that would attract new users to the platform.

+
+
+
+
+
Project Five
+
Structure Cloud
+

For this project, I was tasked with converting the UI of a COBOL application into something that would work with the modern web. The task was very challenging, in that one of the main requirements was to keep the layout as close to the original application as possible (in order to minimize the amount of relearning existing users would need to do), while also providing a clean UI that would attract new users to the platform.

+
+ +
+
+
+
Thumbnail of demo screen +
+
+
+
-
+ + -
-
-
-

Presentations

-

I've created many presentations over the years and recently began to transition them to Figma using the prototyping functionality. -

-
-
-
-
- - Portfolio presentation slide image - Portfolio Review - +
+
+

Presentations

+

I've created many presentations over the years and recently began to transition them to Figma using the prototyping functionality.

+
+
+
+
-
- - Color Picker presentation slide example - Color Picker - - +
+
-
+
diff --git a/src/pages/designs/alm.md b/src/pages/designs/alm.md index 34928b67..10f1b3d7 100644 --- a/src/pages/designs/alm.md +++ b/src/pages/designs/alm.md @@ -8,46 +8,57 @@ eleventyNavigation: parent: Designs order: 2 --- -
-
-
- -
Role
-
Interaction Designer, Prototypes
-
Areas
-
Wireframes, user paths, usability, prototyping
-
Challenge
-
The greater project team was using multiple project management tools, code repositories, and application development processes, with none of them talking to each other. This project takes all of those areas of concern and brings them together into a single, cohesive interface.
-
+
+
+
+
+
Role
+

Interaction Designer, Prototypes

+

Areas

+

Wireframes, user paths, usability, prototyping

+

Challenge

+

The greater project team was using multiple project management tools, code repositories, and application development processes, with none of them talking to each other. This project takes all of those areas of concern and brings them together into a single, cohesive interface.

+
-
-
+
+
+

The Process

Before starting on the Application Lifecycle Management project, it was determined that the following areas would be need to be covered: list of target users, a user flow, wireframes, and, potentially, prototypes for user testings and feasibility.

-

Target Users

+
+
+

Target Users

Through discussions with Stakeholders and Project Management, it was decided that the target users would be set in tiers - General Users (those who need to add and interact with issues, update project assets, and interact daily - a mix of designers and developers); Project Managers (organizers of work, set deadlines and release dates), and Administrators (control any integrations, add-ons, and access).

+
+
+

Application Lifecycle Management flow

-
- - ALM workflow - - Close - - - ALM workflow - +
+
+
+ Image of the ALM workflow +
+
+ +
+
+
+
+

Wireframes and Workflows

For each section of the ALM application, workflows and wireframes were used to identify possible user paths, as well as to strategize initial designs before moving on to high fidelity mockups and prototypes.

From Work Items to Development

-

Goals:

+

Goals:

  • Communicates to the user that direct access to developing the Work Item is available in a single click.
  • Implementation is unobtrusive and implies navigation.
  • @@ -55,126 +66,104 @@ eleventyNavigation:
  • Ordered by recommendation - require users to fill in one area before moving on.
  • As a button, it needs to have a prominent place yet not take the place of a primary button (in style).
- Steps to complete the process: -
-
- - - - Step 1 of the ALM wireframes - - - Step 2 of the ALM wireframes - - - Step 3 of the ALM wireframes - - -
-
- - -
- Wireframe of the work item to coding experience +

Steps to complete the process:

+
+
+
+
+
+ Step 1 of the ALM wireframes +
+
+ Step 2 of the ALM wireframes +
+
+ Step 3 of the ALM wireframes +
-
-

Wireframe

-

This wireframe was created with call outs in order to communicate my thoughts around the design to anyone who saw it, but could not talk with me. Specifically, this worked extremely well when working with colleagues in other time zones where our working ours did not match up.

+
+
+
+
+
+
+
+
+
+ Wireframe of the work item to coding experience +
+
+
+
Wireframe
+

This wireframe was created with call outs in order to communicate my thoughts around the design to anyone who saw it, but could not talk with me. Specifically, this worked extremely well when working with colleagues in other time zones where our working ours did not match up.

+
+
- - +
+
+
+

From these workflows and wireframes, it was determined that additional questions needed to be answered:

+
    +
  • How do we handle accuracy between the linking of work items?
  • +
  • If the work items has a fine name and line number, is the commit SHA also used to help identify the connection?
  • +
  • Are we able to type the URL in a browser and navigate to the work item? (Does it have a unique link or is it randomly generated each time?)
  • +
+
-

From these workflows and wireframes, it was determined that additional questions needed to be answered:

-
    -
  • How do we handle accuracy between the linking of work items?
  • -
  • If the work items has a fine name and line number, is the commit SHA also used to help identify the connection?
  • -
  • Are we able to type the URL in a browser and navigate to the work item? (Does it have a unique link or is it randomly generated each time?)
  • -
+
+
+
+
+

Visual Design

After completing the wireframes and flows, a sample visual design was created. This design was created using the in-house design component library.

- - ALM workflow - - Close - - - ALM workflow - -

Prototyping

-

As part of the testing and usability study process, I created a prototype that demonstrated some of the basic layouts and IA for users to explore and provide feedback on. This process evolved over time and, eventually, became a full-fledged website that utilized static data and was continuously updated as users provided feedback.

-
- View prototypeopen link in a new window - -
-
- -
-

Final thoughts

+
+
+
+ Image of the user flow +
+
+
-

- In review, I believe that this process helped to flush out a great number of questions and concerns, while also demonstrating that their is a solid platform in which to build the full application on. -

-

- The findings discovered through the process were taken to the Project Stakeholders, which were then used to create additional design stories and discussions with the development teams.

- - +
+
+
+
+

Prototyping

+

As part of the testing and usability study process, I created a prototype that demonstrated some of the basic layouts and IA for users to explore and provide feedback on. This process evolved over time and, eventually, became a full-fledged website that utilized static data and was continuously updated as users provided feedback.

+ + +
+
+
+
+
+
+

Final thoughts

+

+ In review, I believe that this process helped to flush out a great number of questions and concerns, while also demonstrating that their is a solid platform in which to build the full application on. +

+

+ The findings discovered through the process were taken to the Project Stakeholders, which were then used to create additional design stories and discussions with the development teams.

+
+
+
diff --git a/src/pages/designs/customer-engagement.md b/src/pages/designs/customer-engagement.md index b03eed28..bd2e8f83 100644 --- a/src/pages/designs/customer-engagement.md +++ b/src/pages/designs/customer-engagement.md @@ -9,33 +9,38 @@ eleventyNavigation: order: 3 --- -
-
-
- -
Role
-
Interaction Designer, Visual Designer
-
Areas
-
Wireframes, Visual Designs
-
Challenge
-
For this project, I was tasked with updating an old user interface to increase usability and visual styling to match a more modern aesthetic.
-
+
+
+
+
+
Role
+

Interaction Designer, Visual Designer

+
Areas
+

Wireframes, Visual Designs

+
Challenge
+

For this project, I was tasked with updating an old user interface to increase usability and visual styling to match a more modern aesthetic.

+
-
-
+
+
+
+
+

Goals

-

The goals of this project were to improve efficiency, upgrade the visual aesthetic, and enhance visual awareness.

-

Sitemap (alpha)

+

The goals of this project were to improve efficiency, upgrade the visual aesthetic, and enhance visual awareness.

+
+
+

Sitemap (alpha)

Before starting on the updated design for the Customer Engagement App (CEA), I first took to creating an updated sitemap. This allowed me to set a basic path for users to navigate through the application, while also separating the pieces of the application into useful areas.

- Sitemap for the alpha version of the Customer Engagement App + Sitemap for the alpha version of the Customer Engagement App Close - Sitemap for the alpha version of the Customer Engagement App + Sitemap for the alpha version of the Customer Engagement App
-

Wireframes

+
+
+

Wireframes

I created a set of wireframes that could be quickly iterated on for presenting ideas to project stakeholders and other interested parties.

-
- Example visual design for the navigation variations in the Customer Engagement App - View PDFOpen PDF in new window +
+ Example visual design for the navigation variations in the Customer Engagement App +
+ View PDFOpen PDF in new window
-

Visual Designs

+
+
+

Visual Designs

These visual designs are a small sampling of the final screens that were implemented as part of the completion of this project. The Dashboard, Reporting screen, and Settings page were considered the high-value items and contained the majority of the different components that would be used across the project. This set the baseline for future screens and allowed the development team to create a component library in which to build upon.

-
-
-
-

Application Dashboard

-
- - Example visual design for the primary dashboard in the Customer Engagement App - - Close - - - Example visual design for the primary dashboard in the Customer Engagement App - -
+
+
+
+ Example visual design for the primary dashboard in the Customer Engagement App +
+
+
-
-
-

Engagement Reporting

-
- - Example visual design for the engagement dashboard in the Customer Engagement App - - Close - - - Example visual design for the engagement dashboard in the Customer Engagement App - -
+
+
+ CEA Engagement Dashboard +
+
+
-
-
-
-

Settings

-
- - Example visual design for the settings page in the Customer Engagement App - - Close - - - Example visual design for the settings page in the Customer Engagement App - -
+
+
+
+ Example visual design for the settings page in the Customer Engagement App +
+
+
-
-

The color palette and simplified component examples were some of the first items created, in order to provide the development team with a baseline in which to build the environment from.

-
-
-
-

Color Palette

-
- - Color palette created for the Customer Engagement App - - Close - - - Color palette created for the Customer Engagement App - -
+
+

The color palette and simplified component examples were some of the first items created, in order to provide the development team with a baseline in which to build the environment from.

+
+
+
+
+ Example visual design for the settings page in the Customer Engagement App +
+
+
-
-
-

Component Examples

-
- - An example of the types of components found in the Customer Engagement App - - Close - - - An example of the types of components found in the Customer Engagement App - -
+
+
+ An example of the types of components found in the Customer Engagement App +
+
+
-
-
-
-

Navigation

-
- - Example visual design for the navigation variations in the Customer Engagement App - - Close - - - Example visual design for the navigation variations in the Customer Engagement App - -
+
+
+
+
+
+ Example visual design for the navigation variations in the Customer Engagement App +
+
+
-
- -
-

Final thoughts

-
-

I believe that the process used for this project, albeit different, fit within the framework given and met all of the requirements as laid out by the Project Management Team. In the end, a new interface was created that met all of the requirements and was based off of clear steps and proper research. Competitively, this new design met, and often surpassed, expectations when compared to what was in use prior to this project.

-
- -
-
+
+
+
+
+
Final thoughts
+

I believe that the process used for this project, albeit different, fit within the framework given and met all of the requirements as laid out by the Project Management Team. In the end, a new interface was created that met all of the requirements and was based off of clear steps and proper research. Competitively, this new design met, and often surpassed, expectations when compared to what was in use prior to this project. +

+
+
+
+
diff --git a/src/pages/designs/task-it.md b/src/pages/designs/task-it.md index 80311d37..de1e30f4 100644 --- a/src/pages/designs/task-it.md +++ b/src/pages/designs/task-it.md @@ -13,28 +13,27 @@ description: "One enterprise task management system to rule them all." // the `ready` class so the UI fades in. document.body.classList.add('ready'); -
-
-
- -
-
Role
-
Lead Designer
-
Areas
-
User research, Wireframes, User journeys, Mockups, Prototyping
-
Problem
-
After more than a decade of minimal updates, multiple subscription services, and independent teams, it became apparent that a single, scalable solution was needed. This project was to replace the existing systems, eliminating costs and overhead.
-
Challenge
-
With multiple systems container millions of tasks (both current and historical) as well as a growing need for various integrations, it was apparent that the user base would be the biggest challenge. Creating something that could not only handle all of the various methods of work, but also the vast historical nature of teams, presented a very unique situation. Additionally, the product had to be one that all users could utilize, no matter their working method. This included, but was not limited to, users with accessibility needs, users who preferred "terminal" or "keyboard" commands, and those who relied on standard keyboard-mouse usage.
-
Constraints
-
The biggest constraint was that of time. As each day passed, users were onboarded to either the older solution or to products that required licenses and cost the company money. The team was given one year to put together an initial release to be announced at an upcoming conference.
-
-
+
+
+
+
+
Role
+

Lead Designer

+
Areas
+

User research, Wireframes, User journeys, Mockups, Prototyping

+
Problem
+

After more than a decade of minimal updates, multiple subscription services, and independent teams, it became apparent that a single, scalable solution was needed. This project was to replace the existing systems, eliminating costs and overhead.

+
Challenge
+

With multiple systems container millions of tasks (both current and historical) as well as a growing need for various integrations, it was apparent that the user base would be the biggest challenge. Creating something that could not only handle all of the various methods of work, but also the vast historical nature of teams, presented a very unique situation. Additionally, the product had to be one that all users could utilize, no matter their working method. This included, but was not limited to, users with accessibility needs, users who preferred "terminal" or "keyboard" commands, and those who relied on standard keyboard-mouse usage.

+
Constraints
+

The biggest constraint was that of time. As each day passed, users were onboarded to either the older solution or to products that required licenses and cost the company money. The team was given one year to put together an initial release to be announced at an upcoming conference.

+
-
-
-

The Process

+
+
+
+

The Process

Before any design work (wireframes, mockups, prototypes) could begin, extensive user research and testing was needed.

Research methods with example questions:

    @@ -78,7 +77,9 @@ description: "One enterprise task management system to rule them all."

    -

    Target Audience

    +
+
+

Target Audience

For the initial release (scoped internally as a "beta"), the target audience consisted of Individual Contributors (IC), with a mix of high-interaction and low-interaction users. These were categorized as "Contributors", "Owners", and "Viewers".

  • Contributor @@ -105,155 +106,165 @@ description: "One enterprise task management system to rule them all."

-

User flows, Wireframes, and Mockups

+
+
+

User flows, Wireframes, and Mockups

For the initial Task Details view, user flows and wireframes were used to identify possible errors. The findings from this work would go on to determine the direction of the final mockups.

-
-
-

User flows

-
- Image of the user flow -
Basic user flow - - Expand - - open image in a new window - -
-
+
+
+
+ Image of the user flow +
+
+ +
-
-

User states

-
- Image of the various user flow states -
User flow states - - Expand - - open image in a new window - -
-
+
+
+ Image of the various user flow states +
+
+ +
-

Initial findings

-

Based off of these user flows, I determined that the success and failures paths needed to be looked at further. Depending on the user, these paths had the potential to break experiences and decrease the usability and delight in the product. -

-
-
-

Wireframes

-

When creating wireframes, I start by taking an existing components (whether already in the application or from the component library in use) and lay out my page. From there, I begin to add some details (using the redacted script font) and basic headings. This is then reviewed with PM, Development, and, if available, fellow UX designers.

- +
+
+
+

Initial findings

+

Based off of these user flows, I determined that the success and failures paths needed to be looked at further. Depending on the user, these paths had the potential to break experiences and decrease the usability and delight in the product. +

-
-

Mockups

-

After reviews have been completed on the wireframes, mockups are created. In my process, I utilize mockups to get the full look/feel of the page without interactions. Once completed, these are used for user testing as well as final review with the development team.

- +
+
+
+
+

Wireframes

+

When creating wireframes, I start by taking an existing components (whether already in the application or from the component library in use) and lay out my page. From there, I begin to add some details (using the redacted script font) and basic headings. This is then reviewed with PM, Development, and, if available, fellow UX designers.

+
+
+

Mockups

+

After reviews have been completed on the wireframes, mockups are created. In my process, I utilize mockups to get the full look/feel of the page without interactions. Once completed, these are used for user testing as well as final review with the development team.

+
+
-
-
+
+
Image of the task details wireframe + src="{{ '/img/task-it_task-details_wireframe.webp' | url }}" class="figure-img img-fluid rounded" alt="Image of the task details wireframe" loading="lazy" style="width:100%;"> Image of the first version of the task details mockup + src="{{ '/img/task-it_task-details_mockup1.webp' | url }}" class="figure-img img-fluid rounded" alt="Image of the first version of the task details mockup" loading="lazy" style="width:100%;">
+
+
+

Testing and Revisions

As part of the iterative process, I consistently looked at user feedback and heat-mapping to determine if there were any changes needed. From the beginning, it was known that additional attributes would be made available to users and that the Task Details page would have to be able to adapt accordingly.

As part of the testing process, I created a card-sorting survey for users, where I included all of the existing attributes, as well as some future-planned attributes, and asked users to order them by priority. Priority was determined by the user, with the only prompt being "what attribute(s) are required for you to get your work done in the most efficient manner?".

-
- Image of the user testing process -
User testing card sorting -
-
+
+
+ Image of the user testing process +
+
+ +
+
+
+
+

Revisions

After analyzing the results of the card-sorting user testing, additional mockups were created to task with the updated attribute priorities.

-
-
-
- Image of the first version of the task details mockup -
Version 2 - - Expand - - open image in a new window - -
-
+
+
+
+ Image of the user testing process +
+
+ +
-
-
- Image of the first version of the task details mockup -
Version 3 - - Expand - - open image in a new window - -
-
+
+
+ Image of the user testing process +
+
+ +
-
-
- Image of the first version of the task details mockup -
Version 4 - - Expand - - open image in a new window - -
-
+
+
+ Image of the user testing process +
+
+ +
-
- -
-

Final thoughts

-
-

Throughout the design process, it became clear that although the initial design solved many of the problems users faced with existing systems, there was plenty of room in which to improve. -

-

From the user testing sessions, specifically card sorting, I was able to adjust the layout and direction of the task details page without negatively impact user's experiences.

-

By working the development team, we were able to quickly role out changes to users and compare the new metrics to those of previous iterations. These metrics became the new baseline for future designs and detail screens across the product.

-
- +
+
+
+
+
Final thoughts
+

Throughout the design process, it became clear that although the initial design solved many of the problems users faced with existing systems, there was plenty of room in which to improve. +

+

From the user testing sessions, specifically card sorting, I was able to adjust the layout and direction of the task details page without negatively impact user's experiences.

+

By working the development team, we were able to quickly role out changes to users and compare the new metrics to those of previous iterations. These metrics became the new baseline for future designs and detail screens across the product.

+
+
diff --git a/src/pages/development.md b/src/pages/development.md index 43914269..b91c3f9b 100644 --- a/src/pages/development.md +++ b/src/pages/development.md @@ -9,185 +9,175 @@ eleventyNavigation: order: 3 --- -
-

Prototypes

-
+

Prototypes

+
+
-
-
-
-

Integration Walkthrough

- +
+
+
-
-
-
-

kubevirt.io

- +
+
+
-
- -
-
-
-

Red Hat Developer Design Manual

- +
+
+
+
+ +
+
+
-
-
-
-

PatternFly.org

- +
+
+
-
-
-

Personal projects

-
- -
-
-
-

Alfred

- -
-
-
- -
-
-
-

Stream Deck icons

- +
+
+
+

Personal Projects

+
+
+
+
- -
-
-
-

Collect Some More

-

a collections app for iOS

- +
+
+
+
+ Thumbnail of Games and Things app icon +
+
+
+
Games And Things
+

Collect Some More - an app for managing game and movie collections.

+ +
+
-
+
-

Oldies but goodies

-
-
-
-
-

fabric8-pattern.library

- +
+
+
+
+
+
+
+
Codepen
-
+ +
+

+ See the Pen + SwitchTrack - Calendar by Adam Jolicoeur (@AdamJolicoeur) on CodePen. +

+ +
- -

Codepen

- - Examples on Codepen - - -
-

- See the Pen - SwitchTrack - Calendar by Adam Jolicoeur (@AdamJolicoeur) - on CodePen. -

- -
-
+
diff --git a/src/pages/icons-and-branding/icons-and-branding.json b/src/pages/icons-and-branding/icons-and-branding.json deleted file mode 100644 index 3455fcfd..00000000 --- a/src/pages/icons-and-branding/icons-and-branding.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "layout": "page", - "permalink": "/icons-and-branding/{{ page.fileSlug }}/" -} diff --git a/src/pages/icons-and-branding/icons.md b/src/pages/icons-and-branding/icons.md deleted file mode 100644 index 8d1ad996..00000000 --- a/src/pages/icons-and-branding/icons.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Icons" -date: git Last Modified -abbreviation: "icons" -description: "Various icons and libraries that I've created." -eleventyNavigation: - key: Icons - parent: Icons-and-Branding - order: 1 ---- - -
-
- -
-

Icon library

-

- Switchback Icon Library -

Stream Deck

-
-
-
diff --git a/src/pages/presentations/colorPicker/color-picker.md b/src/pages/presentations/colorPicker/color-picker.md index 7d52739f..20ba69a8 100644 --- a/src/pages/presentations/colorPicker/color-picker.md +++ b/src/pages/presentations/colorPicker/color-picker.md @@ -8,21 +8,21 @@ eleventyNavigation: key: colorPicker parent: Presentations order: 2 -image1: "/img/colorPicker/slide0.png" +image1: "/img/colorPicker/slide0.webp" image1-alt: "Introduction slide" -image2: "/img/colorPicker/slide1.png" +image2: "/img/colorPicker/slide1.webp" image2-alt: "Slide 2" -image3: "/img/colorPicker/slide2.png" +image3: "/img/colorPicker/slide2.webp" image3-alt: "Slide 3" -image4: "/img/colorPicker/slide3.png" +image4: "/img/colorPicker/slide3.webp" image4-alt: "Slide 4" -image5: "/img/colorPicker/slide4.png" +image5: "/img/colorPicker/slide4.webp" image5-alt: "Slide 5" -image6: "/img/colorPicker/slide5.png" +image6: "/img/colorPicker/slide5.webp" image6-alt: "Slide 6" --- -
+
-
+
diff --git a/src/pages/presentations/portfolio/portfolio.md b/src/pages/presentations/portfolio/portfolio.md index 16e903e7..1e02b49b 100644 --- a/src/pages/presentations/portfolio/portfolio.md +++ b/src/pages/presentations/portfolio/portfolio.md @@ -8,24 +8,24 @@ eleventyNavigation: key: portfolio parent: Presentations order: 1 -image0: /img/portfolio/Slide0.png -image1: /img/portfolio/Slide1.png -image2: /img/portfolio/Slide2-5.png -image3: /img/portfolio/Slide2.png -image4: /img/portfolio/Slide3.png -image5: /img/portfolio/Slide4.png -image6: /img/portfolio/Slide5.png -image7: /img/portfolio/Slide6.png -image8: /img/portfolio/Slide7.png -image9: /img/portfolio/Slide8.png -image10: /img/portfolio/Slide10.png -image11: /img/portfolio/Slide11.png -image12: /img/portfolio/Slide12.png -image13: /img/portfolio/Slide13.png -image14: /img/portfolio/Slide14.png +image0: /img/portfolio/Slide0.webp +image1: /img/portfolio/Slide1.webp +image2: /img/portfolio/Slide2-5.webp +image3: /img/portfolio/Slide2.webp +image4: /img/portfolio/Slide3.webp +image5: /img/portfolio/Slide4.webp +image6: /img/portfolio/Slide5.webp +image7: /img/portfolio/Slide6.webp +image8: /img/portfolio/Slide7.webp +image9: /img/portfolio/Slide8.webp +image10: /img/portfolio/Slide10.webp +image11: /img/portfolio/Slide11.webp +image12: /img/portfolio/Slide12.webp +image13: /img/portfolio/Slide13.webp +image14: /img/portfolio/Slide14.webp --- -
+
-
+ diff --git a/src/pages/reference/games-and-things.png b/src/pages/reference/games-and-things.png deleted file mode 100644 index 95bbb4c5..00000000 Binary files a/src/pages/reference/games-and-things.png and /dev/null differ diff --git a/src/pages/reference/reference.json b/src/pages/reference/reference.json deleted file mode 100644 index 57997615..00000000 --- a/src/pages/reference/reference.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "layout": "page", - "permalink": "/{{ page.fileSlug }}/" -} diff --git a/src/pages/reference/reference.md b/src/pages/reference/reference.md deleted file mode 100644 index e11e79d6..00000000 --- a/src/pages/reference/reference.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "Reference links" -abbreviation: "references" -description: "Links to various downloads and resources." ---- - -
- -| | | -|--|--| -| [Collect Some More](https://github.com/AdamJ/CollectSomeMore) | An iOS application for tracking movies, comic books, collectables, and games. | -| [Gravatar](https://gravatar.com/mindreeper.qr) | Gravatar QR Code | -| [The Proxy Guy](https://www.cardsbyprox.com/) | Patreon card | - -
diff --git a/src/pages/resume.md b/src/pages/resume.md index c9109a46..991c83b1 100644 --- a/src/pages/resume.md +++ b/src/pages/resume.md @@ -9,155 +9,147 @@ eleventyNavigation: parent: About --- -
-
-
-

Lead Program Manager & Designer

-

Component Assembly Systems, Inc. (Pelham, NY)

-

January 2024 - Present

-
- Program Management - Figma - Strategic Technology - Design Systems - Research -
-
-
-

As the Lead Program Manager and Designer, I am responsible for creating product roadmaps, maintaining team goals in order to complete deliverables, and managing the internal software suite.

-
    -
  • Lead Program Manager, CAS Strategic Technology Group
  • -
  • Lead UX Designer, StructureCloud
  • -
+
+
+

Lead Program Manager & Designer

+

Component Assembly Systems, Inc. (Pelham, NY)

+

January 2024 - Present

+
+
Program Management
+
Figma
+
Strategic Technology
+
Design Systems
+
Research
-
-
-

Senior UX Designer

-

Amazon.com, Inc
Amazon Software Builder Experience (Boston, MA)

-

August 2021 - September 2023

-
- Figma - Prototypes - UserTesting - Design Systems - Research - React -
-
-
-

As a Senior UXD on the Amazon Software Builder Experience team, I was responsible for the next generation of task management solutions for Amazon Issue Management. In this role, I oversaw the overall design and deliverables, implementation, collected feedback from internal users. As the lead designer on the project, I was responsible for providing cohesive experiences for all Amazon employees, regardless of role, in order to perform their duties with minimal friction.

-
    -
  • Lead Designer, Task Management
  • -
  • Led user testing and interview sessions
  • -
  • Created prototypes (Figma and React-based) for internal testing and validation using organization design system
  • -
-
+
+

As the Lead Program Manager and Designer, I am responsible for creating product roadmaps, maintaining team goals in order to complete deliverables, and managing the internal software suite.

+
    +
  • Lead Program Manager, CAS Strategic Technology Group
  • +
  • Lead UX Designer, StructureCloud
  • +
-
-
-
-
-

Senior Software Engineer, UXD

-

Red Hat, Inc (Westford, MA)

-

December 2016 - August 2021

-
- Sketch - Adobe XD - HTML - SCSS - Git - OSS -
-
-
-

As a Senior Interaction Designer on the User Experience Design team, my responsibilities included creating user flows, wireframes, mockups, and proofs-of-concepts for products and websites across Red Hat. As part of my role, I became a core contributor to the PatternFly design system and lead designer of the Red Hat Developer Design Manual.

-
    -
  • UX Designer, OpenShift
  • -
  • Designer/Developer, Red Hat Developer Design Manual, developers.redhat.com
  • -
  • Designer/Developer, kubevirt.io
  • -
  • Interaction Designer, Red Had Managed Integration
  • -
  • Core Contributor, PatternFly Design System
  • -
+
+
+
+

Senior UX Designer

+

Amazon.com, Inc
Amazon Software Builder Experience (Boston, MA)

+

August 2021 - September 2023

+
+
Figma
+
Prototypes
+
UserTesting
+
Design Systems
+
Research
+
React
-
-
-
-
-

User Experience Designer

-

Saylent Technologies (Franklin, MA)

-

November 2014 - July 2016

-
- Photoshop - Visual studio - HTML - CSS - Agile -
+
+

As a Senior UXD on the Amazon Software Builder Experience team, I was responsible for the next generation of task management solutions for Amazon Issue Management. In this role, I oversaw the overall design and deliverables, implementation, collected feedback from internal users. As the lead designer on the project, I was responsible for providing cohesive experiences for all Amazon employees, regardless of role, in order to perform their duties with minimal friction.

+
    +
  • Lead Designer, Task Management
  • +
  • Led user testing and interview sessions
  • +
  • Created prototypes (Figma and React-based) for internal testing and validation using organization design system
  • +
+
+ +
+
+

Senior Software Engineer, UXD

+

Red Hat, Inc (Westford, MA)

+

December 2016 - August 2021

+
+
Sketch
+
Adobe XD
+
HTML
+
SCSS
+
Git
+
OSS
-
-

As the first in-house designer, I led the design and user research for the Account360 and Card360 platforms, working with a team of developers to improve product usability. The primary focus for this work was on easy-to-use and manageable interfaces for the financial industry.

-
    -
  • Lead designer, Account360 and Card360 platforms
  • -
  • Lead designer, product refreshes/corporate presentations and sales demonstrations
  • -
  • Created system for UX prototyping and usability testing
  • -
  • Developer, HTML/CSS for use in ASP.net applications
  • -
  • Created style guide/css framework for corporate products
  • -
+
+
+

As a Senior Interaction Designer on the User Experience Design team, my responsibilities included creating user flows, wireframes, mockups, and proofs-of-concepts for products and websites across Red Hat. As part of my role, I became a core contributor to the PatternFly design system and lead designer of the Red Hat Developer Design Manual.

+
    +
  • UX Designer, OpenShift
  • +
  • Designer/Developer, Red Hat Developer Design Manual, developers.redhat.com
  • +
  • Designer/Developer, kubevirt.io
  • +
  • Interaction Designer, Red Had Managed Integration
  • +
  • Core Contributor, PatternFly Design System
  • +
+
+
+
+
+

User Experience Designer

+

Saylent Technologies (Franklin, MA)

+

November 2014 - July 2016

+
+
Photoshop
+
Visual studio
+
HTML
+
CSS
+
Agile
-
-
-
-
-

Vice President, Design

-

Switchback, Inc. (Holden, MA)

-

November 2010 - August 2021 / September 2023 - January 2025

-
- Sketch - Adobe XD - HTML - SCSS - Wireframes -
+
+

As the first in-house designer, I led the design and user research for the Account360 and Card360 platforms, working with a team of developers to improve product usability. The primary focus for this work was on easy-to-use and manageable interfaces for the financial industry.

+
    +
  • Lead designer, Account360 and Card360 platforms
  • +
  • Lead designer, product refreshes/corporate presentations and sales demonstrations
  • +
  • Created system for UX prototyping and usability testing
  • +
  • Developer, HTML/CSS for use in ASP.net applications
  • +
  • Created style guide/css framework for corporate products
  • +
+
+ +
+
+

Vice President, Design

+

Switchback, Inc. (Holden, MA)

+

November 2010 - August 2021 / September 2023 - January 2025

+
+
Sketch
+
Adobe XD
+
HTML
+
SCSS
+
Wireframes
-
+

As a contractor, I was the lead designer for multiple products and web interfaces including a redesign of an internal financial accounting product, an architectural drawing reference interface, and a time management system.

-
    -
  • +
      +
    • Product Design
      • September 2024 - January 2025
    • -
    • +
    • Visual Design & Development
      • November 2010 - December 2021
    • -
    • +
    • Web Design
      • January 2003 - June 2008
-
-
-
-
-

UI Software Engineer

-

Black Duck Software (Burlington, MA)

-

February 2013 - October 2014

-
- HTML - CSS/LESS - Bootstrap - Agile - Git +
+
+
+
+

UI Software Engineer

+

Black Duck Software (Burlington, MA)

+

February 2013 - October 2014

+
+
HTML
+
CSS/LESS
+
Bootstrap
+
Agile
+
Git
-
+

As a UI Software Engineer, I worked with the development and design teams to turn the visual designs into working applications.

-
    +
    • Developed and implemented a software inventory and management system
    • Created and developed wireframes, templates, and live mockups for development team
    • Developed continuity and usability structure for high-interaction areas
    • @@ -165,24 +157,24 @@ eleventyNavigation:
-
-
-
-
-

Help Desk Analyst

-

Conservation Services Group (Westborough, MA)

-

June 2008 - November 2010

-
- JIRA - DevOps - Ubuntu - RHEL - VMs +
+
+
+
+

Help Desk Analyst

+

Conservation Services Group (Westborough, MA)

+

June 2008 - November 2010

+
+
JIRA
+
DevOps
+
Ubuntu
+
RHEL
+
VMs
-
+

As a Help Desk Analyst, I managed and administered the internal IT Help Desk system while maintaining and active system for automated email responses and user-focused ticketing system.

-
    +
    • Managed and administered IT Help Desk System (Spiceworks)
    • Managed and administered Blackberry Enterprise Server 5.0
    • Administered FTP Server and FTP account using SuSE 9 and Ubuntu 8.04 LTS
    • @@ -194,49 +186,76 @@ eleventyNavigation:
-
-
-
- - - -

Massachusetts College of Liberal Arts - North Adams, MA

- 2003 - 2008 -

Bachelor of Arts, Fine and Performing Arts, Music

+
+
+
+
+ +
+ +
+
+
+

Massachusetts College of Liberal Arts - North Adams, MA

+

2003 - 2008

+

Bachelor of Arts, Fine and Performing Arts, Music

Bachelor of Arts, Arts, Entertainment, and Media Management

Alpha Chi - National Scholars Honor Society - Who’s Who in American Colleges and Universities

- - - - -
- Product Design - HTML / CSS - Iconography - Prototyping - Wireframes - User research - Figma / FigJam - Sketch - Design systems - Product management - Roadmapping +
+
+
+
+
+
+ +
+ +
+
+
+
+
Product Design
+
HTML / CSS
+
Iconography
+
Prototyping
+
Wireframes
+
User research
+
Figma / FigJam
+
Sketch
+
Design systems
+
Product management
+
Roadmapping
- - - - -

Various organizations that I have belonged to, past and present.

-

UXPA Boston

- 2017 - Present -

W3C CSS Working Group

- April 2020 - August 2021 -
-
+ + +
+
+
+
+ +
+ +
+
+
+
+

UXPA Boston
2017 - Present

+

W3C CSS Working Group +
+ Red Hat, Inc. +
+ April 2020 - August 2021 +

+
+
+
- diff --git a/src/pages/testimonials.md b/src/pages/testimonials.md index 5d112755..49892c0d 100644 --- a/src/pages/testimonials.md +++ b/src/pages/testimonials.md @@ -4,23 +4,28 @@ abbreviation: "Testimonials" date: git Last Modified description: "I've been fortunate to work with some great people over the years. Here are some of the things they've said about me." --- -
- - > [Adam] is self-driven and keeps stakeholders (Project manager, Development manager, Engineers) aligned on UX solutions...design proposals are spot-on and considerate of [our] diverse set of users. - -*** - - > Adam is highly engaged across 6+ major features at any given time and is somehow never the blocker. Designers like this don't come around often. - >> Senior developer engineer - -*** - - > Adam's working model is highly collaborative and amazingly fast - >> Front end engineer - -*** - - > ...What stood out to me while working with Adam was his positivity and confidence through every obstacle, pivot, and deadline. He is a true team player. - >> Front end engineer - -
+
+
+
+

[Adam] is self-driven and keeps stakeholders (Project manager, Development manager, Engineers) aligned on UX solutions...design proposals are spot-on and considerate of [our] diverse set of users.

+
+
+
+

Adam is highly engaged across 6+ major features at any given time and is somehow never the blocker. Designers like this don't come around often. +

+

Senior developer engineer

+
+
+
+

Adam's working model is highly collaborative and amazingly fast +

+

Front end engineer

+
+
+
+

...What stood out to me while working with Adam was his positivity and confidence through every obstacle, pivot, and deadline. He is a true team player. +

+

Front end engineer

+
+
+
diff --git a/src/pages/uses.md b/src/pages/uses.md index 774636ba..c9a395ee 100644 --- a/src/pages/uses.md +++ b/src/pages/uses.md @@ -1,48 +1,17 @@ --- -layout: "page" +layout: markdown title: "Uses" date: git Last Modified abbreviation: "uses" -description: "What I use as a designer." -headerButton: false +description: "Daily carries and useful tools" +readTime: false +tocBlock: true eleventyNavigation: key: Uses order: 10 ---