Index: frontend/node_modules/@csstools/postcss-cascade-layers/CHANGELOG.md
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/CHANGELOG.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/CHANGELOG.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,39 @@
+# Changes to PostCSS Cascade Layers
+
+### 1.1.1 (September 17, 2022)
+
+- Fix pre-defined layer order in nested `@layer` rules.
+
+### 1.1.0 (September 14, 2022)
+
+- Add support for `@scope` and `@container` as parent rules for `@layer`
+
+### 1.0.6 (September 7, 2022)
+
+- Fix broken `@keyframes` in `@layer`.
+
+### 1.0.5 (July 8, 2022)
+
+- Fix case insensitive `@layer` matching (`@LaYeR`).
+- Updated `@csstools/selector-specificity` to `2.0.2` (patch)
+
+### 1.0.4 (June 23, 2022)
+
+- Fix selector order with any pseudo element. This plugin will no longer re-order selectors.
+
+### 1.0.3 (June 4, 2022)
+
+- Update `@csstools/selector-specificity` (major)
+
+### 1.0.2 (May 20, 2022)
+
+- Use only simple `:not(#\#)` selectors to adjust specificity.
+
+### 1.0.1 (May 17, 2022)
+
+- Process CSS after most other plugins to ensure correct analysis and transformation of sugary CSS.
+- Fix selector order with `:before` and other pseudo elements.
+
+### 1.0.0 (May 12, 2022)
+
+- Initial version
Index: frontend/node_modules/@csstools/postcss-cascade-layers/LICENSE.md
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/LICENSE.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/LICENSE.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,108 @@
+# CC0 1.0 Universal
+
+## Statement of Purpose
+
+The laws of most jurisdictions throughout the world automatically confer
+exclusive Copyright and Related Rights (defined below) upon the creator and
+subsequent owner(s) (each and all, an “owner”) of an original work of
+authorship and/or a database (each, a “Work”).
+
+Certain owners wish to permanently relinquish those rights to a Work for the
+purpose of contributing to a commons of creative, cultural and scientific works
+(“Commons”) that the public can reliably and without fear of later claims of
+infringement build upon, modify, incorporate in other works, reuse and
+redistribute as freely as possible in any form whatsoever and for any purposes,
+including without limitation commercial purposes. These owners may contribute
+to the Commons to promote the ideal of a free culture and the further
+production of creative, cultural and scientific works, or to gain reputation or
+greater distribution for their Work in part through the use and efforts of
+others.
+
+For these and/or other purposes and motivations, and without any expectation of
+additional consideration or compensation, the person associating CC0 with a
+Work (the “Affirmer”), to the extent that he or she is an owner of Copyright
+and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and
+publicly distribute the Work under its terms, with knowledge of his or her
+Copyright and Related Rights in the Work and the meaning and intended legal
+effect of CC0 on those rights.
+
+1. Copyright and Related Rights. A Work made available under CC0 may be
+   protected by copyright and related or neighboring rights (“Copyright and
+   Related Rights”). Copyright and Related Rights include, but are not limited
+   to, the following:
+   1. the right to reproduce, adapt, distribute, perform, display, communicate,
+      and translate a Work;
+   2. moral rights retained by the original author(s) and/or performer(s);
+   3. publicity and privacy rights pertaining to a person’s image or likeness
+      depicted in a Work;
+   4. rights protecting against unfair competition in regards to a Work,
+      subject to the limitations in paragraph 4(i), below;
+   5. rights protecting the extraction, dissemination, use and reuse of data in
+      a Work;
+   6. database rights (such as those arising under Directive 96/9/EC of the
+      European Parliament and of the Council of 11 March 1996 on the legal
+      protection of databases, and under any national implementation thereof,
+      including any amended or successor version of such directive); and
+   7. other similar, equivalent or corresponding rights throughout the world
+      based on applicable law or treaty, and any national implementations
+      thereof.
+
+2. Waiver. To the greatest extent permitted by, but not in contravention of,
+   applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
+   unconditionally waives, abandons, and surrenders all of Affirmer’s Copyright
+   and Related Rights and associated claims and causes of action, whether now
+   known or unknown (including existing as well as future claims and causes of
+   action), in the Work (i) in all territories worldwide, (ii) for the maximum
+   duration provided by applicable law or treaty (including future time
+   extensions), (iii) in any current or future medium and for any number of
+   copies, and (iv) for any purpose whatsoever, including without limitation
+   commercial, advertising or promotional purposes (the “Waiver”). Affirmer
+   makes the Waiver for the benefit of each member of the public at large and
+   to the detriment of Affirmer’s heirs and successors, fully intending that
+   such Waiver shall not be subject to revocation, rescission, cancellation,
+   termination, or any other legal or equitable action to disrupt the quiet
+   enjoyment of the Work by the public as contemplated by Affirmer’s express
+   Statement of Purpose.
+
+3. Public License Fallback. Should any part of the Waiver for any reason be
+   judged legally invalid or ineffective under applicable law, then the Waiver
+   shall be preserved to the maximum extent permitted taking into account
+   Affirmer’s express Statement of Purpose. In addition, to the extent the
+   Waiver is so judged Affirmer hereby grants to each affected person a
+   royalty-free, non transferable, non sublicensable, non exclusive,
+   irrevocable and unconditional license to exercise Affirmer’s Copyright and
+   Related Rights in the Work (i) in all territories worldwide, (ii) for the
+   maximum duration provided by applicable law or treaty (including future time
+   extensions), (iii) in any current or future medium and for any number of
+   copies, and (iv) for any purpose whatsoever, including without limitation
+   commercial, advertising or promotional purposes (the “License”). The License
+   shall be deemed effective as of the date CC0 was applied by Affirmer to the
+   Work. Should any part of the License for any reason be judged legally
+   invalid or ineffective under applicable law, such partial invalidity or
+   ineffectiveness shall not invalidate the remainder of the License, and in
+   such case Affirmer hereby affirms that he or she will not (i) exercise any
+   of his or her remaining Copyright and Related Rights in the Work or (ii)
+   assert any associated claims and causes of action with respect to the Work,
+   in either case contrary to Affirmer’s express Statement of Purpose.
+
+4. Limitations and Disclaimers.
+   1. No trademark or patent rights held by Affirmer are waived, abandoned,
+      surrendered, licensed or otherwise affected by this document.
+   2. Affirmer offers the Work as-is and makes no representations or warranties
+      of any kind concerning the Work, express, implied, statutory or
+      otherwise, including without limitation warranties of title,
+      merchantability, fitness for a particular purpose, non infringement, or
+      the absence of latent or other defects, accuracy, or the present or
+      absence of errors, whether or not discoverable, all to the greatest
+      extent permissible under applicable law.
+   3. Affirmer disclaims responsibility for clearing rights of other persons
+      that may apply to the Work or any use thereof, including without
+      limitation any person’s Copyright and Related Rights in the Work.
+      Further, Affirmer disclaims responsibility for obtaining any necessary
+      consents, permissions or other rights required for any use of the Work.
+   4. Affirmer understands and acknowledges that Creative Commons is not a
+      party to this document and has no duty or obligation with respect to this
+      CC0 or use of the Work.
+
+For more information, please see
+http://creativecommons.org/publicdomain/zero/1.0/.
Index: frontend/node_modules/@csstools/postcss-cascade-layers/README.md
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,200 @@
+# PostCSS Cascade Layers [<img src="https://postcss.github.io/postcss/logo.svg" alt="PostCSS Logo" width="90" height="90" align="right">][postcss]
+
+[<img alt="npm version" src="https://img.shields.io/npm/v/@csstools/postcss-cascade-layers.svg" height="20">][npm-url] [<img alt="CSS Standard Status" src="https://cssdb.org/images/badges/cascade-layers.svg" height="20">][css-url] [<img alt="Build Status" src="https://github.com/csstools/postcss-plugins/workflows/test/badge.svg" height="20">][cli-url] [<img alt="Discord" src="https://shields.io/badge/Discord-5865F2?logo=discord&logoColor=white">][discord]
+
+[PostCSS Cascade Layers] lets you use `@layer` following the [Cascade Layers Specification]. For more information on layers, checkout [A Complete Guide to CSS Cascade Layers] by Miriam Suzanne.
+
+```pcss
+
+target {
+	color: purple;
+}
+
+@layer {
+	target {
+		color: green;
+	}
+}
+
+
+/* becomes */
+
+
+target:not(#\#) {
+	color: purple;
+}
+
+target {
+		color: green;
+	}
+
+```
+
+## How it works
+
+[PostCSS Cascade Layers] creates "layers" of specificity.
+
+It applies extra specificity on all your styles based on :
+- the most specific selector found
+- the order in which layers are defined
+
+```css
+@layer A, B;
+
+@layer B {
+	.a-less-specific-selector {
+		/* styles */
+	}
+}
+
+@layer A {
+	#something #very-specific {
+		/* styles */
+	}
+}
+
+@layer C {
+	.a-less-specific-selector {
+		/* styles */
+	}
+}
+```
+
+most specific selector :
+- `#something #very-specific`
+- `[2, 0, 0]`
+- `2 + 1` -> `3` to ensure there is no overlap
+
+the order in which layers are defined :
+- `A`
+- `B`
+- `C`
+
+| layer | previous adjustment | specificity adjustment | selector |
+| ------ | ------ | ----------- | --- |
+| `A` | `0` | `0 + 0 = 0` | N/A |
+| `B` | `0` | `0 + 3 = 3` | `:not(#/#):not(#/#):not(#/#)` |
+| `C` | `3` | `3 + 3 = 6` | `:not(#/#):not(#/#):not(#/#):not(#/#):not(#/#):not(#/#)` |
+
+This approach lets more important (later) layers always override less important (earlier) layers.<br>
+And layers have enough room internally so that each selector works and overrides as expected.
+
+More layers with more specificity will cause longer `:not(...)` selectors to be generated.
+
+⚠️ For this to work the plugin needs to analyze your entire stylesheet at once.<br>
+If you have different assets that are unaware of each other it will not work correctly as the analysis will be incorrect.
+
+## Usage
+
+Add [PostCSS Cascade Layers] to your project:
+
+```bash
+npm install postcss @csstools/postcss-cascade-layers --save-dev
+```
+
+Use it as a [PostCSS] plugin:
+
+```js
+const postcss = require('postcss');
+const postcssCascadeLayers = require('@csstools/postcss-cascade-layers');
+
+postcss([
+	postcssCascadeLayers(/* pluginOptions */)
+]).process(YOUR_CSS /*, processOptions */);
+```
+
+[PostCSS Cascade Layers] runs in all Node environments, with special
+instructions for:
+
+| [Node](INSTALL.md#node) | [PostCSS CLI](INSTALL.md#postcss-cli) | [Webpack](INSTALL.md#webpack) | [Create React App](INSTALL.md#create-react-app) | [Gulp](INSTALL.md#gulp) | [Grunt](INSTALL.md#grunt) |
+| --- | --- | --- | --- | --- | --- |
+
+## Options
+
+### onRevertLayerKeyword
+
+The `onRevertLayerKeyword` option enables warnings if `revert-layer` is used.
+Transforming `revert-layer` for older browsers is not possible in this plugin.
+
+Defaults to `warn`
+
+```js
+postcssCascadeLayers({ onRevertLayerKeyword: 'warn' }) // 'warn' | false
+```
+
+```pcss
+/* [postcss-cascade-layers]: handling "revert-layer" is unsupported by this plugin and will cause style differences between browser versions. */
+@layer {
+	.foo {
+		color: revert-layer;
+	}
+}
+```
+
+### onConditionalRulesChangingLayerOrder
+
+The `onConditionalRulesChangingLayerOrder` option enables warnings if layers are declared in multiple different orders in conditional rules.
+Transforming these layers correctly for older browsers is not possible in this plugin.
+
+Defaults to `warn`
+
+```js
+postcssCascadeLayers({ onConditionalRulesChangingLayerOrder: 'warn' }) // 'warn' | false
+```
+
+```pcss
+/* [postcss-cascade-layers]: handling different layer orders in conditional rules is unsupported by this plugin and will cause style differences between browser versions. */
+@media (min-width: 10px) {
+	@layer B {
+		.foo {
+			color: red;
+		}
+	}
+}
+
+@layer A {
+	.foo {
+		color: pink;
+	}
+}
+
+@layer B {
+	.foo {
+		color: red;
+	}
+}
+```
+
+### onImportLayerRule
+
+The `@import` at-rule can also be used with cascade layers, specifically to create a new layer like so: 
+```css
+@import 'theme.css' layer(utilities);
+```
+If your CSS uses `@import` with layers, you will also need the [postcss-import] plugin. This plugin alone will not handle the `@import` at-rule.  
+
+This plugin will warn you when it detects that [postcss-import] did not transform`@import` at-rules.
+
+```js
+postcssCascadeLayers({ onImportLayerRule: 'warn' }) // 'warn' | false
+```
+
+### Contributors
+The contributors to this plugin were [Olu Niyi-Awosusi] and [Sana Javed] from [Oddbird] and Romain Menke.
+
+[cli-url]: https://github.com/csstools/postcss-plugins/actions/workflows/test.yml?query=workflow/test
+[css-url]: https://cssdb.org/#cascade-layers
+[discord]: https://discord.gg/bUadyRwkJS
+[npm-url]: https://www.npmjs.com/package/@csstools/postcss-cascade-layers
+
+[Gulp PostCSS]: https://github.com/postcss/gulp-postcss
+[Grunt PostCSS]: https://github.com/nDmitry/grunt-postcss
+[PostCSS]: https://github.com/postcss/postcss
+[PostCSS Loader]: https://github.com/postcss/postcss-loader
+[PostCSS Cascade Layers]: https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-cascade-layers
+[Cascade Layers Specification]: https://www.w3.org/TR/css-cascade-5/#layering
+[A Complete Guide to CSS Cascade Layers]: https://css-tricks.com/css-cascade-layers/
+[Olu Niyi-Awosusi]: https://github.com/oluoluoxenfree
+[Sana Javed]: https://github.com/sanajaved7
+[Oddbird]: https://github.com/oddbird
+[postcss-import]: https://github.com/postcss/postcss-import
Index: frontend/node_modules/@csstools/postcss-cascade-layers/dist/adjust-selector-specificity.d.ts
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/dist/adjust-selector-specificity.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/dist/adjust-selector-specificity.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+export declare function adjustSelectorSpecificity(selector: string, amount: number): string;
Index: frontend/node_modules/@csstools/postcss-cascade-layers/dist/clean-blocks.d.ts
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/dist/clean-blocks.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/dist/clean-blocks.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+import type { Container } from 'postcss';
+export declare function removeEmptyDescendantBlocks(block: Container): void;
+export declare function removeEmptyAncestorBlocks(block: Container): void;
Index: frontend/node_modules/@csstools/postcss-cascade-layers/dist/constants.d.ts
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/dist/constants.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/dist/constants.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,8 @@
+/** @constant {string} INVALID_LAYER_NAME Used to replace "layer" temporarily when an invalid layer is detected. This allows us to ignore this rule in further processing. */
+export declare const INVALID_LAYER_NAME = "csstools-invalid-layer";
+/** @constant {string} WITH_SELECTORS_LAYER_NAME Used to replace "layer" temporarily for any layer at rules that contain selectors. This allows us to sort these differently from other layer at rules. */
+export declare const WITH_SELECTORS_LAYER_NAME = "csstools-layer-with-selector-rules";
+export declare const ANONYMOUS_LAYER_SUFFIX = "6efdb677-bb05-44e5-840f-29d2175862fd";
+export declare const IMPLICIT_LAYER_SUFFIX = "b147acf6-11a6-4338-a4d0-80aef4cd1a2f";
+export declare const CONDITIONAL_ATRULES: string[];
+export declare const ATRULES_WITH_NON_SELECTOR_BLOCK_LISTS: string[];
Index: frontend/node_modules/@csstools/postcss-cascade-layers/dist/desugar-and-parse-layer-names.d.ts
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/dist/desugar-and-parse-layer-names.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/dist/desugar-and-parse-layer-names.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+import type { Container } from 'postcss';
+import type { Model } from './model';
+export declare function desugarAndParseLayerNames(root: Container, model: Model): void;
Index: frontend/node_modules/@csstools/postcss-cascade-layers/dist/desugar-nested-layers.d.ts
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/dist/desugar-nested-layers.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/dist/desugar-nested-layers.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+import type { Container, ChildNode } from 'postcss';
+import type { Model } from './model';
+export declare function desugarNestedLayers(root: Container<ChildNode>, model: Model): void;
Index: frontend/node_modules/@csstools/postcss-cascade-layers/dist/get-conditional-atrule-ancestor.d.ts
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/dist/get-conditional-atrule-ancestor.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/dist/get-conditional-atrule-ancestor.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+import type { AtRule } from 'postcss';
+export declare function getConditionalAtRuleAncestor(layerRule: AtRule): AtRule | null;
Index: frontend/node_modules/@csstools/postcss-cascade-layers/dist/get-layer-atrule-ancestor.d.ts
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/dist/get-layer-atrule-ancestor.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/dist/get-layer-atrule-ancestor.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+import type { AtRule, Node } from 'postcss';
+export declare function getLayerAtRuleAncestor(node: Node): AtRule | null;
Index: frontend/node_modules/@csstools/postcss-cascade-layers/dist/index.cjs
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/dist/index.cjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/dist/index.cjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+"use strict";var e=require("postcss-selector-parser"),r=require("@csstools/selector-specificity");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e);const s=["media","supports"],n=["keyframes"],o=new Set(["layer","supports","media","container","scope"]);function l(e){if("atrule"!==e.type)return!1;if("layer"!==e.name.toLowerCase())return!1;let r=e.parent;for(;r;){if("rule"===r.type)return!1;if("atrule"===r.type&&!o.has(r.name.toLowerCase()))return!1;r=r.parent}return!0}class i{constructor(){this.anonymousLayerCount=0,this.layerCount=0,this.anonymousLayerCount=0,this.layerCount=0,this.layerOrder=new Map,this.layerParamsParsed=new Map,this.layerNameParts=new Map}createAnonymousLayerName(){const e=`anonymous-${this.anonymousLayerCount}-6efdb677-bb05-44e5-840f-29d2175862fd`;return this.addLayerNameParts(e),this.layerParamsParsed.set(e,[e]),this.anonymousLayerCount++,e}createImplicitLayerName(e){const r=this.layerNameParts.get(e),a=`implicit-${r[r.length-1]}-b147acf6-11a6-4338-a4d0-80aef4cd1a2f`;return this.addLayerNameParts([...r,a]),this.layerParamsParsed.set(a,[a]),a}addLayerParams(e,r){r?"string"!=typeof r?this.layerParamsParsed.set(e,r):this.layerParamsParsed.set(e,[r]):this.layerParamsParsed.set(e,[e])}addLayerNameParts(e){"string"!=typeof e?this.layerNameParts.set(e.join("."),e):this.layerNameParts.set(e,[e])}getLayerParams(e){const r=[...this.layerParamsParsed.get(e.params)];let a=e.parent;for(;a;)"atrule"===a.type?(l(a)&&r.push(...this.layerParamsParsed.get(a.params)),a=a.parent):a=a.parent;return r.reverse(),r.flatMap((e=>this.layerNameParts.get(e)))}getLayerNameList(e){const r=this.layerNameParts.get(e),a=[];for(let e=0;e<r.length;e++){const t=r.slice(0,e+1).join(".");this.layerParamsParsed.has(t)||this.layerParamsParsed.set(t,[t]),this.layerNameParts.has(t)||this.layerNameParts.set(t,r.slice(0,e+1)),a.push(r.slice(0,e+1).join("."))}return a}sortLayerNames(){for(const[e,r]of this.layerOrder){const a=this.layerNameParts.get(e);for(let e=1;e<a.length;e++){const t=a.slice(0,e).join(".");this.layerOrder.has(t)||this.layerOrder.set(t,r)}}let e=Array.from(this.layerOrder.entries());e=e.sort(((e,r)=>{const a=this.layerNameParts.get(e[0]),t=this.layerNameParts.get(r[0]);if(a[0]!==t[0])return this.layerOrder.get(a[0])-this.layerOrder.get(t[0]);const s=Math.max(a.length,t.length);for(let e=0;e<s;e++){const r=a[e],s=t[e];if(r!==s)return r?s?this.layerOrder.get(a.slice(0,e).join("."))-this.layerOrder.get(t.slice(0,e).join(".")):-1:1}})),this.layerOrder.clear(),e.forEach(((e,r)=>{this.layerOrder.set(e[0],r)}))}}function u(e,r){const a=t.default().astSync(e),s=t.default().astSync(function(e){if(0===e)return"";let r="";for(let a=0;a<e;a++)r+=":not(#\\#)";return r}(r));let n=!1;for(let e=0;e<a.nodes[0].nodes.length;e++)if("combinator"===a.nodes[0].nodes[e].type||t.default.isPseudoElement(a.nodes[0].nodes[e])){a.nodes[0].insertBefore(a.nodes[0].nodes[e],s),n=!0;break}return n||a.nodes[0].insertAfter(a.nodes[0].nodes[a.nodes[0].nodes.length-1],s),a.toString()}function y(e,r){let a=!1;return e.walk((e=>{if(r(e))return a=!0,!1})),a}function c(e,r){let a=!1;return e.walkAtRules((e=>{if(r(e))return a=!0,!1})),a}function d(e){let r=e.parent;for(;r;)if("atrule"===r.type){if(l(r))return r;r=r.parent}else r=r.parent;return null}function p(e){var r;e.walk((e=>{var r;("rule"===e.type||"atrule"===e.type&&["layer",...s].includes(e.name.toLowerCase()))&&(0===(null==(r=e.nodes)?void 0:r.length)&&e.remove())})),0===(null==(r=e.nodes)?void 0:r.length)&&e.remove()}function m(e){let r=e;for(;r;){if(void 0===r.nodes)return;if(r.nodes.length>0)return;const e=r.parent;r.remove(),r=e}}function f(e,r,{result:a,options:t}){e.walkAtRules((e=>{if(!l(e))return;const n=r.getLayerParams(e),o=n.join(".");r.layerOrder.has(o)||(t.onConditionalRulesChangingLayerOrder&&function(e){let r=e.parent;for(;r;)if("atrule"===r.type){if(s.includes(r.name.toLowerCase()))return r;r=r.parent}else r=r.parent;return null}(e)&&!e.params.endsWith("b147acf6-11a6-4338-a4d0-80aef4cd1a2f")&&!e.params.endsWith("6efdb677-bb05-44e5-840f-29d2175862fd")&&e.warn(a,"handling different layer orders in conditional rules is unsupported by this plugin and will cause style differences between browser versions."),r.layerParamsParsed.has(o)||r.layerParamsParsed.set(o,[o]),r.layerNameParts.has(o)||r.layerNameParts.set(o,[...n]),r.getLayerNameList(o).forEach((e=>{r.layerOrder.has(e)||(r.layerOrder.set(e,r.layerCount),r.layerCount+=1)}))),e.nodes&&0!==e.nodes.length||e.remove()}))}const h=e=>{const a=Object.assign({onRevertLayerKeyword:"warn",onConditionalRulesChangingLayerOrder:"warn",onImportLayerRule:"warn"},e);return{postcssPlugin:"postcss-cascade-layers",OnceExit(e,{result:o}){a.onRevertLayerKeyword&&e.walkDecls((e=>{"revert-layer"===e.value.toLowerCase()&&e.warn(o,'handling "revert-layer" is unsupported by this plugin and will cause style differences between browser versions.')})),a.onImportLayerRule&&e.walkAtRules((e=>{"import"===e.name.toLowerCase()&&e.params.toLowerCase().includes("layer")&&e.warn(o,"To use @import with layers, the postcss-import plugin is also required. This plugin alone will not support using the @import at-rule.")})),function(e){e.walkDecls((e=>{if(!e.important)return;const r=e.parent;if(r.parent&&"atrule"===r.parent.type&&n.includes(r.parent.name.toLowerCase()))return;const a=r.clone();a.each((e=>{"decl"===e.type&&e.important||e.remove()})),r.each((e=>{"decl"===e.type&&e.important&&e.remove()})),r.before(a),p(r)}))}(e);const h=new i;if(function(e,r){e.walkAtRules((e=>{if(!l(e))return;if(e.params){const a=[];let s=!1;if(t.default().astSync(e.params).each((e=>{const t=[];e.walk((e=>{switch(e.type){case"class":case"tag":t.push(e.value);break;default:s=!0}})),s||(a.push(t.join(".")),r.addLayerNameParts(t))})),r.addLayerParams(e.params,a),e.nodes&&a.length>1&&(s=!0),s)return void(e.name="csstools-invalid-layer");if(!e.nodes||0===e.nodes.length){if(a.length<=1)return;return a.slice(0,-1).forEach((a=>{r.addLayerParams(a,a),e.cloneBefore({params:a})})),r.addLayerParams(a[a.length-1],a[a.length-1]),void(e.params=a[a.length-1])}}e.params||(e.raws.afterName=" ",e.params=r.createAnonymousLayerName());const a=c(e,(e=>l(e))),n=y(e,(r=>{if("rule"===r.type)return d(r)===e}));if(a&&n){const a=r.createImplicitLayerName(e.params),t=e.clone({params:a});t.walkAtRules((e=>{l(e)&&e.remove()})),e.walk((r=>{"atrule"===r.type&&l(r)||"atrule"===r.type&&s.includes(r.name.toLowerCase())||d(r)===e&&r.remove()})),e.append(t),p(e),m(e)}}))}(e,h),f(e,h,{result:o,options:a}),!h.layerCount)return void e.walkAtRules("csstools-invalid-layer",(e=>{e.name="layer"}));let w=0;for(e.walkRules((e=>{e.selectors.forEach((e=>{const a=r.selectorSpecificity(t.default().astSync(e));w=Math.max(w,a.a+1)}))})),e.walkRules((e=>{e.parent&&"atrule"===e.parent.type&&n.includes(e.parent.name.toLowerCase())||d(e)||e.some((e=>"decl"===e.type&&e.important))||(e.selectors=e.selectors.map((e=>u(e,h.layerCount*w))))})),h.sortLayerNames(),function(e,r){for(;c(e,(e=>e.nodes&&c(e,(e=>l(e)))));){let a=!1;if(e.walkAtRules((t=>{if(l(t)&&t.parent!==e){if("atrule"===t.parent.type&&l(t.parent)){const e=t.parent;return r.layerNameParts.set(`${e.params}.${t.params}`,[...r.layerNameParts.get(e.params),...r.layerNameParts.get(t.params)]),r.layerParamsParsed.set(`${e.params}.${t.params}`,[`${e.params}.${t.params}`]),t.params=`${e.params}.${t.params}`,e.before(t),p(e),void m(e)}if("atrule"===t.parent.type){const e=t.parent,r=e.clone(),a=t.clone();return r.removeAll(),a.removeAll(),r.append(t.nodes),a.append(r),e.before(a),t.remove(),p(e),void m(e)}a=!0}})),a)break}}(e,h),function(e,r){e.walkAtRules((e=>{if(!l(e))return;const r=e.clone(),a=e.clone();r.walkAtRules((e=>{if(n.includes(e.name.toLowerCase())){const r=e.parent;return e.remove(),p(r),void m(r)}if(y(e,(e=>"rule"===e.type)))return;const r=e.parent;e.remove(),p(r),m(r)})),a.walkRules((e=>{if(e.parent&&"atrule"===e.parent.type&&n.includes(e.parent.name.toLowerCase()))return;const r=e.parent;e.remove(),p(r),m(r)})),a.walkAtRules((e=>{if(s.includes(e.name.toLowerCase()))return p(e),void m(e)})),r.name="csstools-layer-with-selector-rules",e.replaceWith(r,a),0===r.nodes.length&&r.remove(),0===a.nodes.length&&a.remove()})),e.nodes.sort(((e,a)=>{const t="atrule"===e.type&&"layer"===e.name.toLowerCase(),s="atrule"===a.type&&"layer"===a.name.toLowerCase();return t&&s?r.layerOrder.get(e.params)-r.layerOrder.get(a.params):t!==s?t?-1:1:0})),e.walkAtRules("csstools-layer-with-selector-rules",(e=>{e.name="layer"}))}(e,h),e.walkRules((e=>{if(e.parent&&"atrule"===e.parent.type&&n.includes(e.parent.name.toLowerCase()))return;const r=d(e);if(!r)return;const a=h.getLayerParams(r).join(".");let t=h.layerOrder.get(a)*w;e.some((e=>"decl"===e.type&&e.important))&&(t=h.layerCount-t),e.selectors=e.selectors.map((e=>u(e,t)))}));c(e,(e=>l(e)));)e.walkAtRules((e=>{l(e)&&e.replaceWith(e.nodes)}));e.walkAtRules("csstools-invalid-layer",(e=>{e.name="layer"}))}}};h.postcss=!0,module.exports=h;
Index: frontend/node_modules/@csstools/postcss-cascade-layers/dist/index.d.ts
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/dist/index.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/dist/index.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,4 @@
+import type { PluginCreator } from 'postcss';
+import { pluginOptions } from './options';
+declare const creator: PluginCreator<pluginOptions>;
+export default creator;
Index: frontend/node_modules/@csstools/postcss-cascade-layers/dist/index.mjs
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/dist/index.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/dist/index.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+import e from"postcss-selector-parser";import{selectorSpecificity as r}from"@csstools/selector-specificity";const a=["media","supports"],t=["keyframes"],s=new Set(["layer","supports","media","container","scope"]);function n(e){if("atrule"!==e.type)return!1;if("layer"!==e.name.toLowerCase())return!1;let r=e.parent;for(;r;){if("rule"===r.type)return!1;if("atrule"===r.type&&!s.has(r.name.toLowerCase()))return!1;r=r.parent}return!0}class o{constructor(){this.anonymousLayerCount=0,this.layerCount=0,this.anonymousLayerCount=0,this.layerCount=0,this.layerOrder=new Map,this.layerParamsParsed=new Map,this.layerNameParts=new Map}createAnonymousLayerName(){const e=`anonymous-${this.anonymousLayerCount}-6efdb677-bb05-44e5-840f-29d2175862fd`;return this.addLayerNameParts(e),this.layerParamsParsed.set(e,[e]),this.anonymousLayerCount++,e}createImplicitLayerName(e){const r=this.layerNameParts.get(e),a=`implicit-${r[r.length-1]}-b147acf6-11a6-4338-a4d0-80aef4cd1a2f`;return this.addLayerNameParts([...r,a]),this.layerParamsParsed.set(a,[a]),a}addLayerParams(e,r){r?"string"!=typeof r?this.layerParamsParsed.set(e,r):this.layerParamsParsed.set(e,[r]):this.layerParamsParsed.set(e,[e])}addLayerNameParts(e){"string"!=typeof e?this.layerNameParts.set(e.join("."),e):this.layerNameParts.set(e,[e])}getLayerParams(e){const r=[...this.layerParamsParsed.get(e.params)];let a=e.parent;for(;a;)"atrule"===a.type?(n(a)&&r.push(...this.layerParamsParsed.get(a.params)),a=a.parent):a=a.parent;return r.reverse(),r.flatMap((e=>this.layerNameParts.get(e)))}getLayerNameList(e){const r=this.layerNameParts.get(e),a=[];for(let e=0;e<r.length;e++){const t=r.slice(0,e+1).join(".");this.layerParamsParsed.has(t)||this.layerParamsParsed.set(t,[t]),this.layerNameParts.has(t)||this.layerNameParts.set(t,r.slice(0,e+1)),a.push(r.slice(0,e+1).join("."))}return a}sortLayerNames(){for(const[e,r]of this.layerOrder){const a=this.layerNameParts.get(e);for(let e=1;e<a.length;e++){const t=a.slice(0,e).join(".");this.layerOrder.has(t)||this.layerOrder.set(t,r)}}let e=Array.from(this.layerOrder.entries());e=e.sort(((e,r)=>{const a=this.layerNameParts.get(e[0]),t=this.layerNameParts.get(r[0]);if(a[0]!==t[0])return this.layerOrder.get(a[0])-this.layerOrder.get(t[0]);const s=Math.max(a.length,t.length);for(let e=0;e<s;e++){const r=a[e],s=t[e];if(r!==s)return r?s?this.layerOrder.get(a.slice(0,e).join("."))-this.layerOrder.get(t.slice(0,e).join(".")):-1:1}})),this.layerOrder.clear(),e.forEach(((e,r)=>{this.layerOrder.set(e[0],r)}))}}function l(r,a){const t=e().astSync(r),s=e().astSync(function(e){if(0===e)return"";let r="";for(let a=0;a<e;a++)r+=":not(#\\#)";return r}(a));let n=!1;for(let r=0;r<t.nodes[0].nodes.length;r++)if("combinator"===t.nodes[0].nodes[r].type||e.isPseudoElement(t.nodes[0].nodes[r])){t.nodes[0].insertBefore(t.nodes[0].nodes[r],s),n=!0;break}return n||t.nodes[0].insertAfter(t.nodes[0].nodes[t.nodes[0].nodes.length-1],s),t.toString()}function i(e,r){let a=!1;return e.walk((e=>{if(r(e))return a=!0,!1})),a}function u(e,r){let a=!1;return e.walkAtRules((e=>{if(r(e))return a=!0,!1})),a}function y(e){let r=e.parent;for(;r;)if("atrule"===r.type){if(n(r))return r;r=r.parent}else r=r.parent;return null}function m(e){var r;e.walk((e=>{var r;("rule"===e.type||"atrule"===e.type&&["layer",...a].includes(e.name.toLowerCase()))&&(0===(null==(r=e.nodes)?void 0:r.length)&&e.remove())})),0===(null==(r=e.nodes)?void 0:r.length)&&e.remove()}function p(e){let r=e;for(;r;){if(void 0===r.nodes)return;if(r.nodes.length>0)return;const e=r.parent;r.remove(),r=e}}function c(e,r,{result:t,options:s}){e.walkAtRules((e=>{if(!n(e))return;const o=r.getLayerParams(e),l=o.join(".");r.layerOrder.has(l)||(s.onConditionalRulesChangingLayerOrder&&function(e){let r=e.parent;for(;r;)if("atrule"===r.type){if(a.includes(r.name.toLowerCase()))return r;r=r.parent}else r=r.parent;return null}(e)&&!e.params.endsWith("b147acf6-11a6-4338-a4d0-80aef4cd1a2f")&&!e.params.endsWith("6efdb677-bb05-44e5-840f-29d2175862fd")&&e.warn(t,"handling different layer orders in conditional rules is unsupported by this plugin and will cause style differences between browser versions."),r.layerParamsParsed.has(l)||r.layerParamsParsed.set(l,[l]),r.layerNameParts.has(l)||r.layerNameParts.set(l,[...o]),r.getLayerNameList(l).forEach((e=>{r.layerOrder.has(e)||(r.layerOrder.set(e,r.layerCount),r.layerCount+=1)}))),e.nodes&&0!==e.nodes.length||e.remove()}))}const d=s=>{const d=Object.assign({onRevertLayerKeyword:"warn",onConditionalRulesChangingLayerOrder:"warn",onImportLayerRule:"warn"},s);return{postcssPlugin:"postcss-cascade-layers",OnceExit(s,{result:f}){d.onRevertLayerKeyword&&s.walkDecls((e=>{"revert-layer"===e.value.toLowerCase()&&e.warn(f,'handling "revert-layer" is unsupported by this plugin and will cause style differences between browser versions.')})),d.onImportLayerRule&&s.walkAtRules((e=>{"import"===e.name.toLowerCase()&&e.params.toLowerCase().includes("layer")&&e.warn(f,"To use @import with layers, the postcss-import plugin is also required. This plugin alone will not support using the @import at-rule.")})),function(e){e.walkDecls((e=>{if(!e.important)return;const r=e.parent;if(r.parent&&"atrule"===r.parent.type&&t.includes(r.parent.name.toLowerCase()))return;const a=r.clone();a.each((e=>{"decl"===e.type&&e.important||e.remove()})),r.each((e=>{"decl"===e.type&&e.important&&e.remove()})),r.before(a),m(r)}))}(s);const h=new o;if(function(r,t){r.walkAtRules((r=>{if(!n(r))return;if(r.params){const a=[];let s=!1;if(e().astSync(r.params).each((e=>{const r=[];e.walk((e=>{switch(e.type){case"class":case"tag":r.push(e.value);break;default:s=!0}})),s||(a.push(r.join(".")),t.addLayerNameParts(r))})),t.addLayerParams(r.params,a),r.nodes&&a.length>1&&(s=!0),s)return void(r.name="csstools-invalid-layer");if(!r.nodes||0===r.nodes.length){if(a.length<=1)return;return a.slice(0,-1).forEach((e=>{t.addLayerParams(e,e),r.cloneBefore({params:e})})),t.addLayerParams(a[a.length-1],a[a.length-1]),void(r.params=a[a.length-1])}}r.params||(r.raws.afterName=" ",r.params=t.createAnonymousLayerName());const s=u(r,(e=>n(e))),o=i(r,(e=>{if("rule"===e.type)return y(e)===r}));if(s&&o){const e=t.createImplicitLayerName(r.params),s=r.clone({params:e});s.walkAtRules((e=>{n(e)&&e.remove()})),r.walk((e=>{"atrule"===e.type&&n(e)||"atrule"===e.type&&a.includes(e.name.toLowerCase())||y(e)===r&&e.remove()})),r.append(s),m(r),p(r)}}))}(s,h),c(s,h,{result:f,options:d}),!h.layerCount)return void s.walkAtRules("csstools-invalid-layer",(e=>{e.name="layer"}));let w=0;for(s.walkRules((a=>{a.selectors.forEach((a=>{const t=r(e().astSync(a));w=Math.max(w,t.a+1)}))})),s.walkRules((e=>{e.parent&&"atrule"===e.parent.type&&t.includes(e.parent.name.toLowerCase())||y(e)||e.some((e=>"decl"===e.type&&e.important))||(e.selectors=e.selectors.map((e=>l(e,h.layerCount*w))))})),h.sortLayerNames(),function(e,r){for(;u(e,(e=>e.nodes&&u(e,(e=>n(e)))));){let a=!1;if(e.walkAtRules((t=>{if(n(t)&&t.parent!==e){if("atrule"===t.parent.type&&n(t.parent)){const e=t.parent;return r.layerNameParts.set(`${e.params}.${t.params}`,[...r.layerNameParts.get(e.params),...r.layerNameParts.get(t.params)]),r.layerParamsParsed.set(`${e.params}.${t.params}`,[`${e.params}.${t.params}`]),t.params=`${e.params}.${t.params}`,e.before(t),m(e),void p(e)}if("atrule"===t.parent.type){const e=t.parent,r=e.clone(),a=t.clone();return r.removeAll(),a.removeAll(),r.append(t.nodes),a.append(r),e.before(a),t.remove(),m(e),void p(e)}a=!0}})),a)break}}(s,h),function(e,r){e.walkAtRules((e=>{if(!n(e))return;const r=e.clone(),s=e.clone();r.walkAtRules((e=>{if(t.includes(e.name.toLowerCase())){const r=e.parent;return e.remove(),m(r),void p(r)}if(i(e,(e=>"rule"===e.type)))return;const r=e.parent;e.remove(),m(r),p(r)})),s.walkRules((e=>{if(e.parent&&"atrule"===e.parent.type&&t.includes(e.parent.name.toLowerCase()))return;const r=e.parent;e.remove(),m(r),p(r)})),s.walkAtRules((e=>{if(a.includes(e.name.toLowerCase()))return m(e),void p(e)})),r.name="csstools-layer-with-selector-rules",e.replaceWith(r,s),0===r.nodes.length&&r.remove(),0===s.nodes.length&&s.remove()})),e.nodes.sort(((e,a)=>{const t="atrule"===e.type&&"layer"===e.name.toLowerCase(),s="atrule"===a.type&&"layer"===a.name.toLowerCase();return t&&s?r.layerOrder.get(e.params)-r.layerOrder.get(a.params):t!==s?t?-1:1:0})),e.walkAtRules("csstools-layer-with-selector-rules",(e=>{e.name="layer"}))}(s,h),s.walkRules((e=>{if(e.parent&&"atrule"===e.parent.type&&t.includes(e.parent.name.toLowerCase()))return;const r=y(e);if(!r)return;const a=h.getLayerParams(r).join(".");let s=h.layerOrder.get(a)*w;e.some((e=>"decl"===e.type&&e.important))&&(s=h.layerCount-s),e.selectors=e.selectors.map((e=>l(e,s)))}));u(s,(e=>n(e)));)s.walkAtRules((e=>{n(e)&&e.replaceWith(e.nodes)}));s.walkAtRules("csstools-invalid-layer",(e=>{e.name="layer"}))}}};d.postcss=!0;export{d as default};
Index: frontend/node_modules/@csstools/postcss-cascade-layers/dist/is-processable-layer-rule.d.ts
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/dist/is-processable-layer-rule.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/dist/is-processable-layer-rule.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+import type { AtRule } from 'postcss';
+export declare function isProcessableLayerRule(atRule: AtRule): boolean;
Index: frontend/node_modules/@csstools/postcss-cascade-layers/dist/model.d.ts
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/dist/model.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/dist/model.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,18 @@
+import type { AtRule } from 'postcss';
+export declare class Model {
+    anonymousLayerCount: number;
+    layerCount: number;
+    layerOrder: Map<string, number>;
+    layerParamsParsed: Map<string, Array<string>>;
+    layerNameParts: Map<string, Array<string>>;
+    constructor();
+    createAnonymousLayerName(): string;
+    createImplicitLayerName(layerName: string): string;
+    addLayerParams(key: string, parts?: string): void;
+    addLayerParams(key: string, parts: Array<string>): void;
+    addLayerNameParts(parts: string): void;
+    addLayerNameParts(parts: Array<string>): void;
+    getLayerParams(layer: AtRule): Array<string>;
+    getLayerNameList(layerName: string): Array<string>;
+    sortLayerNames(): void;
+}
Index: frontend/node_modules/@csstools/postcss-cascade-layers/dist/options.d.ts
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/dist/options.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/dist/options.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,5 @@
+export declare type pluginOptions = {
+    onRevertLayerKeyword: 'warn' | false;
+    onConditionalRulesChangingLayerOrder: 'warn' | false;
+    onImportLayerRule: 'warn' | false;
+};
Index: frontend/node_modules/@csstools/postcss-cascade-layers/dist/record-layer-order.d.ts
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/dist/record-layer-order.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/dist/record-layer-order.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,7 @@
+import type { Container, Result } from 'postcss';
+import type { Model } from './model';
+import { pluginOptions } from './options';
+export declare function recordLayerOrder(root: Container, model: Model, { result, options }: {
+    result: Result;
+    options: pluginOptions;
+}): void;
Index: frontend/node_modules/@csstools/postcss-cascade-layers/dist/some-in-tree.d.ts
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/dist/some-in-tree.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/dist/some-in-tree.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+import type { Container, ChildNode, AtRule } from 'postcss';
+export declare function someInTree(container: Container, predicate: (node: ChildNode) => boolean): boolean;
+export declare function someAtRuleInTree(container: Container, predicate: (node: AtRule) => boolean): boolean;
Index: frontend/node_modules/@csstools/postcss-cascade-layers/dist/sort-root-nodes.d.ts
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/dist/sort-root-nodes.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/dist/sort-root-nodes.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+import type { Container } from 'postcss';
+import type { Model } from './model';
+export declare function sortRootNodes(root: Container, model: Model): void;
Index: frontend/node_modules/@csstools/postcss-cascade-layers/dist/split-important-styles.d.ts
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/dist/split-important-styles.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/dist/split-important-styles.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+import type { Container } from 'postcss';
+export declare function splitImportantStyles(root: Container): void;
Index: frontend/node_modules/@csstools/postcss-cascade-layers/package.json
===================================================================
--- frontend/node_modules/@csstools/postcss-cascade-layers/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@csstools/postcss-cascade-layers/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,97 @@
+{
+	"name": "@csstools/postcss-cascade-layers",
+	"description": "Use cascade layers in CSS",
+	"version": "1.1.1",
+	"contributors": [
+		{
+			"name": "Olu Niyi-Awosusi",
+			"email": "o.niyiawosusi@gmail.com"
+		},
+		{
+			"name": "Sana Javed",
+			"email": "sanajaved7@gmail.com"
+		},
+		{
+			"name": "Antonio Laguna",
+			"email": "antonio@laguna.es",
+			"url": "https://antonio.laguna.es"
+		},
+		{
+			"name": "Romain Menke",
+			"email": "romainmenke@gmail.com"
+		}
+	],
+	"license": "CC0-1.0",
+	"funding": {
+		"type": "opencollective",
+		"url": "https://opencollective.com/csstools"
+	},
+	"engines": {
+		"node": "^12 || ^14 || >=16"
+	},
+	"main": "dist/index.cjs",
+	"module": "dist/index.mjs",
+	"types": "dist/index.d.ts",
+	"exports": {
+		".": {
+			"import": "./dist/index.mjs",
+			"require": "./dist/index.cjs",
+			"default": "./dist/index.mjs"
+		}
+	},
+	"files": [
+		"CHANGELOG.md",
+		"LICENSE.md",
+		"README.md",
+		"dist"
+	],
+	"dependencies": {
+		"@csstools/selector-specificity": "^2.0.2",
+		"postcss-selector-parser": "^6.0.10"
+	},
+	"peerDependencies": {
+		"postcss": "^8.2"
+	},
+	"devDependencies": {
+		"postcss-import": "^15.0.0",
+		"puppeteer": "^17.1.3"
+	},
+	"scripts": {
+		"build": "rollup -c ../../rollup/default.js",
+		"clean": "node -e \"fs.rmSync('./dist', { recursive: true, force: true });\"",
+		"docs": "node ../../.github/bin/generate-docs/install.mjs && node ../../.github/bin/generate-docs/readme.mjs",
+		"lint": "npm run lint:eslint && npm run lint:package-json",
+		"lint:eslint": "eslint ./src --ext .js --ext .ts --ext .mjs --no-error-on-unmatched-pattern",
+		"lint:package-json": "node ../../.github/bin/format-package-json.mjs",
+		"prepublishOnly": "npm run clean && npm run build && npm run test",
+		"test": "node .tape.mjs && npm run test:exports",
+		"test:browser": "node ./test/_browser.mjs",
+		"test:exports": "node ./test/_import.mjs && node ./test/_require.cjs",
+		"test:rewrite-expects": "REWRITE_EXPECTS=true node .tape.mjs"
+	},
+	"homepage": "https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-cascade-layers#readme",
+	"repository": {
+		"type": "git",
+		"url": "https://github.com/csstools/postcss-plugins.git",
+		"directory": "plugins/postcss-cascade-layers"
+	},
+	"bugs": "https://github.com/csstools/postcss-plugins/issues",
+	"keywords": [
+		"cascade",
+		"css",
+		"layers",
+		"postcss",
+		"postcss-plugin",
+		"selectors",
+		"specificity"
+	],
+	"csstools": {
+		"cssdbId": "cascade-layers",
+		"exportName": "postcssCascadeLayers",
+		"humanReadableName": "PostCSS Cascade Layers",
+		"specUrl": "https://www.w3.org/TR/css-cascade-5/#layering"
+	},
+	"volta": {
+		"extends": "../../package.json"
+	}
+}
