Index: frontend/node_modules/postcss-logical/CHANGELOG.md
===================================================================
--- frontend/node_modules/postcss-logical/CHANGELOG.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/postcss-logical/CHANGELOG.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,82 @@
+# Changes to PostCSS Logical Properties
+
+### 5.0.4 (February 5, 2022)
+
+- Improved `es module` and `commonjs` compatibility
+
+### 5.0.3 (January 12, 2022)
+
+- Fix compatibility with PostCSS `v8.2.x` [#147](https://github.com/csstools/postcss-plugins/issues/147)
+
+This version is not officially supported but some tool providers pinned PostCSS to `v8.2.x`,
+making it impossible for end users to have a working setup.
+
+### 5.0.2 (January 2, 2022)
+
+- Removed Sourcemaps from package tarball.
+- Moved CLI to CLI Package. See [announcement](https://github.com/csstools/postcss-plugins/discussions/121).
+- Updated examples in README.
+
+### 5.0.1 (December 13, 2021)
+
+- Updated: documentation
+
+### 5.0.0 (September 17, 2021)
+
+- Updated: Support for PostCS 8+ (major).
+- Updated: Support for Node 12+ (major).
+
+### 4.0.2 (June 10, 2019)
+
+- Fixed: Restored transforms for `max-block-size`, `max-inline-size`,
+  `min-block-size`, and `min-inline-size`.
+
+### 4.0.1 (June 10, 2019)
+
+- Fixed: An issue with `block-size` and `inline-size` being miscalculated.
+
+### 4.0.0 (June 5, 2019)
+
+- Added: Logical border-radius properties, which include
+  `border-end-end-radius`, `border-end-start-radius`, `border-start-end-radius`,
+  and `border-start-start-radius`.
+- Removed: All unknown logical properties, which include `border-end`,
+  `border-end-color`, `border-end-style`, `border-end-width`, `border-start`,
+  `border-start-color`, `border-start-style`, `border-start-width`, `inset-end`,
+  `inset-start`, `margin-end`, `margin-start`, `padding-end`, `padding-start`
+  and `border` with `logical`.
+- Updated: `transition` and `transition-property` to support the changes.
+- Updated: `postcss` to 7.0.16 (patch)
+- Updated: Node 8+ compatibility (major)
+
+### 3.0.0 (September 20, 2018)
+
+- Added: Support for logical properties within `transition` and
+  `transition-property`.
+- Changed: Physical rule fallbacks are written as full selectors rather than
+  as nesting selectors.
+
+### 2.0.0 (September 17, 2018)
+
+- Updated: Support for PostCSS v7+
+- Updated: Support for Node v6+
+
+### 1.1.1 (March 21, 2017)
+
+- Fix `dir` option to allow falsey value
+
+### 1.1.0 (March 20, 2017)
+
+- Add `preserve` option to preserve logical properties and values
+
+### 1.0.2 (Aug 15, 2017)
+
+- Improve flow-relative clear support
+
+### 1.0.1 (Aug 13, 2017)
+
+- Improve flow-relative border support
+
+### 1.0.0 (Aug 8, 2017)
+
+- Initial version
Index: frontend/node_modules/postcss-logical/LICENSE.md
===================================================================
--- frontend/node_modules/postcss-logical/LICENSE.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/postcss-logical/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/postcss-logical/README.md
===================================================================
--- frontend/node_modules/postcss-logical/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/postcss-logical/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,211 @@
+# PostCSS Logical Properties and Values [<img src="https://postcss.github.io/postcss/logo.svg" alt="PostCSS Logo" width="90" height="90" align="right">][postcss]
+
+[![NPM Version][npm-img]][npm-url]
+[![CSS Standard Status][css-img]][css-url]
+[![Build Status][cli-img]][cli-url]
+[<img alt="Discord" src="https://shields.io/badge/Discord-5865F2?logo=discord&logoColor=white">][discord]
+
+[PostCSS Logical Properties and Values] lets you use logical, rather than
+physical, direction and dimension mappings in CSS, following the
+[CSS Logical Properties and Values] specification.
+
+[!['Can I use' table](https://caniuse.bitsofco.de/image/css-logical-props.png)](https://caniuse.com/#feat=css-logical-props)
+
+```pcss
+.banner {
+  color: #222222;
+  inset: logical 0 5px 10px;
+  padding-inline: 20px 40px;
+  resize: block;
+  transition: color 200ms;
+}
+
+/* becomes */
+
+.banner:dir(ltr) {
+  padding-left: 20px;
+  padding-right: 40px;
+}
+.banner:dir(rtl) {
+  padding-right: 20px;
+  padding-left: 40px;
+}
+.banner {
+  color: #222222;
+  top: 0;
+  left: 5px;
+  bottom: 10px;
+  right: 5px;
+  resize: vertical;
+  transition: color 200ms;
+}
+
+/* or, when used with { dir: 'ltr' } */
+
+.banner {
+  color: #222222;
+  top: 0;
+  left: 5px;
+  bottom: 10px;
+  right: 5px;
+  padding-left: 20px;
+  padding-right: 40px;
+  resize: vertical;
+  transition: color 200ms;
+}
+
+/* or, when used with { preserve: true } */
+
+.banner:dir(ltr) {
+  padding-left: 20px;
+  padding-right: 40px;
+}
+.banner:dir(rtl) {
+  padding-right: 20px;
+  padding-left: 40px;
+}
+.banner {
+  color: #222222;
+  top: 0;
+  left: 5px;
+  bottom: 10px;
+  right: 5px;
+  inset: logical 0 5px 10px;
+  padding-inline: 20px 40px;
+  resize: vertical;
+  resize: block;
+  transition: color 200ms;
+}
+```
+
+These shorthand properties set values for physical properties by default.
+Specifying the `logical` keyboard at the beginning of the property value will
+transform the flow-relative values afterward into both physical LTR and RTL
+properties:
+
+#### Logical Borders
+
+- `border`, `border-block`, `border-block-start`, `border-block-end`,
+  `border-inline`, `border-inline-start`, `border-inline-end`, `border-start`,
+  `border-end`, `border-color`, `border-block-color`,
+  `border-block-start-color`, `border-block-end-color`, `border-inline-color`,
+  `border-inline-start-color`, `border-inline-end-color`, `border-start-color`,
+  `border-end-color`, `border-style`, `border-block-style`,
+  `border-block-start-style`, `border-block-end-style`, `border-inline-style`,
+  `border-inline-start-style`, `border-inline-end-style`, `border-start-style`,
+  `border-end-style`, `border-width`, `border-block-width`,
+  `border-block-start-width`, `border-block-end-width`, `border-inline-width`,
+  `border-inline-start-width`, `border-inline-end-width`, `border-start-width`,
+  `border-end-width`, `border-start-start-radius`, `border-start-end-radius`,
+  `border-end-start-radius`, `border-end-end-radius`
+
+#### Logical Offsets
+
+- `inset`, `inset-block`, `inset-block-start`, `inset-block-end`,
+  `inset-inline`, `inset-inline-start`, `inset-inline-end`, `inset-start`,
+  `inset-end`
+
+#### Logical Margins
+
+- `margin`, `margin-block`, `margin-block-start`, `margin-block-end`,
+  `margin-inline`, `margin-inline-start`, `margin-inline-end`, `margin-start`,
+  `margin-end`
+
+#### Logical Paddings
+
+- `padding`, `padding-block`, `padding-block-start`, `padding-block-end`,
+  `padding-inline`, `padding-inline-start`, `padding-inline-end`,
+  `padding-start`, `padding-end`
+
+#### Logical Sizes
+
+- `block-size`, `max-block-size`, `min-block-size`, `inline-size`, `max-inline-size`, `min-inline-size`
+
+#### Flow-Relative Values
+
+- `clear: inline-start`, `clear: inline-end`, `float: inline-start`,
+  `float: inline-end`, `text-align: start`, `text-align: end`
+
+---
+
+By default, [PostCSS Logical Properties and Values] creates fallback selectors
+which require at least one `[dir]` attribute in your HTML. If you don’t have
+any `[dir]` attributes, consider using the following JavaScript:
+
+```js
+// force at least one dir attribute (this can run at any time)
+document.documentElement.dir = document.documentElement.dir || 'ltr';
+```
+
+Otherwise, consider using the `dir` option to transform all logical properties
+and values to a specific direction.
+
+```js
+require('postcss-logical')({
+  dir: 'ltr'
+});
+```
+
+## Usage
+
+Add [PostCSS Logical Properties and Values] to your project:
+
+```bash
+npm install postcss-logical --save-dev
+```
+
+Use [PostCSS Logical Properties and Values] as a [PostCSS] plugin:
+
+```js
+const postcss = require('postcss');
+const postcssLogical = require('postcss-logical');
+
+postcss([
+  postcssLogical(/* pluginOptions */)
+]).process(YOUR_CSS /*, processOptions */);
+```
+
+[PostCSS Logical Properties and Values] 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
+
+### dir
+
+The `dir` option determines how directional fallbacks should be added to CSS.
+By default, fallbacks replace the logical declaration with nested `:dir`
+pseudo-classes. If `dir` is defined as `ltr` or `rtl` then only the left or
+right directional fallbacks will replace the logical declarations. If
+`preserve` is defined as `true`, then the `dir` option will be ignored.
+
+### preserve
+
+The `preserve` option determines whether directional fallbacks should be added
+before logical declarations without replacing them. By default, directional
+fallbacks replace logical declaration. If `preserve` is defined as `true`, then
+the `dir` option will be ignored.
+
+## :dir() pseudo class
+
+This plugin transforms using the `:dir(ltr)` pseudo class.
+Use [postcss-dir-pseudo-class](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-dir-pseudo-class#readme) to further transform to `[dir="ltr"]`.
+
+Currently `:dir(ltr)` doesn't have great browser support but this will improve over time.
+
+[css-img]: https://cssdb.org/images/badges/logical-properties-and-values.svg
+[css-url]: https://cssdb.org/#logical-properties-and-values
+[cli-img]: https://github.com/csstools/postcss-plugins/workflows/test/badge.svg
+[cli-url]: https://github.com/csstools/postcss-plugins/actions/workflows/test.yml?query=workflow/test
+[discord]: https://discord.gg/bUadyRwkJS
+[npm-img]: https://img.shields.io/npm/v/postcss-logical.svg
+[npm-url]: https://www.npmjs.com/package/postcss-logical
+
+[CSS Logical Properties and Values]: https://drafts.csswg.org/css-logical/
+[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 Logical Properties and Values]: https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-logical
Index: frontend/node_modules/postcss-logical/dist/index.cjs
===================================================================
--- frontend/node_modules/postcss-logical/dist/index.cjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/postcss-logical/dist/index.cjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+"use strict";function r(r){return r&&"object"==typeof r&&"default"in r?r:{default:r}}var e=r(require("postcss")),t=(r,t)=>{const o="rule"===Object(r.parent).type?r.parent.cloneBefore({raws:{}}).removeAll():e.default.rule({selector:"&"});return o.selectors=o.selectors.map((r=>`${r}:dir(${t})`)),o};const o=/^border-(block|block-start|block-end|inline|inline-start|inline-end)(-(width|style|color))?$/i;var l=(r,e,t,l)=>{r.cloneBefore({prop:`border-top${r.prop.replace(o,"$2")}`,value:e[0]}),r.cloneBefore({prop:`border-bottom${r.prop.replace(o,"$2")}`,value:e[1]||e[0]}),b(r,l)},n=(r,e,t,l)=>{r.cloneBefore({prop:`border-top${r.prop.replace(o,"$2")}`}),b(r,l)},i=(r,e,t,l)=>{r.cloneBefore({prop:`border-bottom${r.prop.replace(o,"$2")}`}),b(r,l)},d=(r,e,l,n)=>{const i=()=>[r.cloneBefore({prop:`border-left${r.prop.replace(o,"$2")}`,value:e[0]}),r.cloneBefore({prop:`border-right${r.prop.replace(o,"$2")}`,value:e[1]||e[0]})],d=()=>[r.clone({prop:`border-right${r.prop.replace(o,"$2")}`,value:e[0]}),r.clone({prop:`border-left${r.prop.replace(o,"$2")}`,value:e[1]||e[0]})];return 1===e.length||2===e.length&&e[0]===e[1]||"ltr"===l?(i(),void b(r,n)):"rtl"===l?(d(),void b(r,n)):(t(r,"ltr").append(i()),t(r,"rtl").append(d()),void b(r,n))},p=(r,e,l,n)=>{const i=()=>r.cloneBefore({prop:`border-left${r.prop.replace(o,"$2")}`}),d=()=>r.cloneBefore({prop:`border-right${r.prop.replace(o,"$2")}`});return"ltr"===l?(i(),void b(r,n)):"rtl"===l?(d(),void b(r,n)):(t(r,"ltr").append(i()),t(r,"rtl").append(d()),void b(r,n))},a=(r,e,l,n)=>{const i=()=>r.cloneBefore({prop:`border-right${r.prop.replace(o,"$2")}`}),d=()=>r.cloneBefore({prop:`border-left${r.prop.replace(o,"$2")}`});return"ltr"===l?(i(),void b(r,n)):"rtl"===l?(d(),void b(r,n)):(t(r,"ltr").append(i()),t(r,"rtl").append(d()),void b(r,n))};function b(r,e){e||r.remove()}const c=/^(border-)(end-end|end-start|start-end|start-start)(-radius)$/i,s={"end-end":"bottom-right","end-start":"bottom-left","start-end":"top-right","start-start":"top-left"},g={"end-end":"bottom-left","end-start":"bottom-right","start-end":"top-left","start-start":"top-right"};var f=(r,e,o,l)=>"ltr"===o?(u(r),void v(r,l)):"rtl"===o?(h(r),void v(r,l)):(t(r,"ltr").append(u(r)),t(r,"rtl").append(h(r)),void v(r,l));function u(r){return r.cloneBefore({prop:r.prop.replace(c,((r,e,t,o)=>`${e}${s[t]}${o}`))})}function h(r){return r.cloneBefore({prop:r.prop.replace(c,((r,e,t,o)=>`${e}${g[t]}${o}`))})}function v(r,e){e||r.remove()}var m=r=>{const e=r.slice();return 4===e.length&&e[3]===e[1]&&e.pop(),3===e.length&&e[2]===e[0]&&e.pop(),2===e.length&&e[1]===e[0]&&e.pop(),e},k=(r,e,o,l)=>{if("logical"!==e[0])return null;const[,n,i,d,p]=e,a=m([n,p||i||n,d||n,i||n]),b=()=>r.cloneBefore({value:a.join(" ")});if(a.length<4||"ltr"===o)return b(),void $(r,l);const c=m([n,i||n,d||n,p||i||n]),s=()=>r.cloneBefore({value:c.join(" ")});if("rtl"===o)return s(),void $(r,l);t(r,"ltr").append(b()),t(r,"rtl").append(s()),$(r,l)};function $(r,e){e||r.remove()}var B=(r,e,o,l)=>/^inline-start$/i.test(r.value)?"ltr"===o?(y(r),void j(r,l)):"rtl"===o?(w(r),void j(r,l)):(t(r,"ltr").append(y(r)),t(r,"rtl").append(w(r)),void j(r,l)):/^inline-end$/i.test(r.value)?"ltr"===o?(w(r),void j(r,l)):"rtl"===o?(y(r),void j(r,l)):(t(r,"ltr").append(w(r)),t(r,"rtl").append(y(r)),void j(r,l)):void 0;function y(r){return r.cloneBefore({value:"left"})}function w(r){return r.cloneBefore({value:"right"})}function j(r,e){e||r.remove()}var z=(r,e,o,l)=>{if("logical"!==e[0])return r.cloneBefore({prop:"top",value:e[0]}),r.cloneBefore({prop:"right",value:e[1]||e[0]}),r.cloneBefore({prop:"bottom",value:e[2]||e[0]}),r.cloneBefore({prop:"left",value:e[3]||e[1]||e[0]}),void O(r,l);return!e[4]||e[4]===e[2]||"ltr"===o?(x(r,e),void O(r,l)):"rtl"===o?(E(r,e),void O(r,l)):(t(r,"ltr").append(x(r,e)),t(r,"rtl").append(E(r,e)),void O(r,l))};function x(r,e){return[r.cloneBefore({prop:"top",value:e[1]}),r.cloneBefore({prop:"left",value:e[2]||e[1]}),r.cloneBefore({prop:"bottom",value:e[3]||e[1]}),r.cloneBefore({prop:"right",value:e[4]||e[2]||e[1]})]}function E(r,e){return[r.cloneBefore({prop:"top",value:e[1]}),r.cloneBefore({prop:"right",value:e[2]||e[1]}),r.cloneBefore({prop:"bottom",value:e[3]||e[1]}),r.cloneBefore({prop:"left",value:e[4]||e[2]||e[1]})]}function O(r,e){e||r.remove()}var q=(r,e,t,o)=>/^block$/i.test(r.value)?(r.cloneBefore({value:"vertical"}),void A(r,o)):/^inline$/i.test(r.value)?(r.cloneBefore({value:"horizontal"}),void A(r,o)):void 0;function A(r,e){e||r.remove()}var D=/^(inset|margin|padding)(?:-(block|block-start|block-end|inline|inline-start|inline-end|start|end))$/i,P=/^inset-/i,C=(r,e,t)=>r.cloneBefore({prop:`${r.prop.replace(D,"$1")}${e}`.replace(P,""),value:t}),F=(r,e,t,o)=>{C(r,"-top",e[0]),C(r,"-bottom",e[1]||e[0]),L(r,o)},G=(r,e,t,o)=>{r.cloneBefore({prop:r.prop.replace(D,"$1-top").replace(P,"")}),L(r,o)},H=(r,e,t,o)=>{r.cloneBefore({prop:r.prop.replace(D,"$1-bottom").replace(P,"")}),L(r,o)},I=(r,e,o,l)=>{const n=()=>[C(r,"-left",e[0]),C(r,"-right",e[1]||e[0])],i=()=>[C(r,"-right",e[0]),C(r,"-left",e[1]||e[0])];return 1===e.length||2===e.length&&e[0]===e[1]||"ltr"===o?(n(),void L(r,l)):"rtl"===o?(i(),void L(r,l)):(t(r,"ltr").append(n()),t(r,"rtl").append(i()),void L(r,l))},J=(r,e,o,l)=>{const n=()=>C(r,"-left",r.value),i=()=>C(r,"-right",r.value);return"ltr"===o?(n(),void L(r,l)):"rtl"===o?(i(),void L(r,l)):(t(r,"ltr").append(n()),t(r,"rtl").append(i()),void L(r,l))},K=(r,e,o,l)=>{const n=()=>C(r,"-right",r.value),i=()=>C(r,"-left",r.value);return"ltr"===o?(n(),void L(r,l)):"rtl"===o?(i(),void L(r,l)):(t(r,"ltr").append(n()),t(r,"rtl").append(i()),void L(r,l))};function L(r,e){e||r.remove()}var M=/^(min-|max-)?(block|inline)-(size)$/i,N=(r,e,t,o)=>{r.cloneBefore({prop:r.prop.replace(M,((r,e,t)=>`${e||""}${"block"===t?"height":"width"}`))}),o||r.remove()},Q=(r,e,o,l)=>/^start$/i.test(r.value)?"ltr"===o?(R(r),void T(r,l)):"rtl"===o?(S(r),void T(r,l)):(t(r,"ltr").append(R(r)),t(r,"rtl").append(S(r)),void T(r,l)):/^end$/i.test(r.value)?"ltr"===o?(S(r),void T(r,l)):"rtl"===o?(R(r),void T(r,l)):(t(r,"ltr").append(S(r)),t(r,"rtl").append(R(r)),void T(r,l)):void 0;function R(r){return r.cloneBefore({value:"left"})}function S(r){return r.cloneBefore({value:"right"})}function T(r,e){e||r.remove()}function U(r,e){return V(r,/^\s$/,e)}function V(r,e,t){const o=[];let l="",n=!1,i=0,d=-1;for(;++d<r.length;){const p=r[d];"("===p?i+=1:")"===p?i>0&&(i-=1):0===i&&e.test(p)&&(n=!0),n?(t&&!l.trim()||o.push(t?l.trim():l),t||o.push(p),l="",n=!1):l+=p}return""!==l&&o.push(t?l.trim():l),o}var W=(r,e,o,l)=>{const n=[],i=[];var d,p;return(d=r.value,V(d,/^,$/,p)).forEach((r=>{let e=!1;U(r).forEach(((r,t,o)=>{r in X&&(e=!0,X[r].ltr.forEach((r=>{const e=o.slice();e.splice(t,1,r),n.length&&!/^,$/.test(n[n.length-1])&&n.push(","),n.push(e.join(""))})),X[r].rtl.forEach((r=>{const e=o.slice();e.splice(t,1,r),i.length&&!/^,$/.test(i[i.length-1])&&i.push(","),i.push(e.join(""))})))})),e||(n.push(r),i.push(r))})),n.length&&"ltr"===o?(l&&r.cloneBefore({}),void(r.value=n.join(""))):i.length&&"rtl"===o?(l&&r.cloneBefore({}),void(r.value=i.join(""))):n.join("")!==i.join("")?(t(r,"ltr").append(r.cloneBefore({value:n.join("")})),t(r,"rtl").append(r.cloneBefore({value:i.join("")})),void function(r,e){e||r.remove()}(r,l)):void 0};const X={"block-size":{ltr:["height"],rtl:["height"]},"inline-size":{ltr:["width"],rtl:["width"]},"margin-block-end":{ltr:["margin-bottom"],rtl:["margin-bottom"]},"margin-block-start":{ltr:["margin-top"],rtl:["margin-top"]},"margin-block":{ltr:["margin-top","margin-bottom"],rtl:["margin-top","margin-bottom"]},"margin-inline-end":{ltr:["margin-right"],rtl:["margin-left"]},"margin-inline-start":{ltr:["margin-left"],rtl:["margin-right"]},"margin-inline":{ltr:["margin-left","margin-right"],rtl:["margin-left","margin-right"]},"inset-block-end":{ltr:["bottom"],rtl:["bottom"]},"inset-block-start":{ltr:["top"],rtl:["top"]},"inset-block":{ltr:["top","bottom"],rtl:["top","bottom"]},"inset-inline-end":{ltr:["right"],rtl:["left"]},"inset-inline-start":{ltr:["left"],rtl:["right"]},"inset-inline":{ltr:["left","right"],rtl:["left","right"]},inset:{ltr:["top","right","bottom","left"],rtl:["top","right","bottom","left"]},"padding-block-end":{ltr:["padding-bottom"],rtl:["padding-bottom"]},"padding-block-start":{ltr:["padding-top"],rtl:["padding-top"]},"padding-block":{ltr:["padding-top","padding-bottom"],rtl:["padding-top","padding-bottom"]},"padding-inline-end":{ltr:["padding-right"],rtl:["padding-left"]},"padding-inline-start":{ltr:["padding-left"],rtl:["padding-right"]},"padding-inline":{ltr:["padding-left","padding-right"],rtl:["padding-left","padding-right"]},"border-block-color":{ltr:["border-top-color","border-bottom-color"],rtl:["border-top-color","border-bottom-color"]},"border-block-end-color":{ltr:["border-bottom-color"],rtl:["border-bottom-color"]},"border-block-end-style":{ltr:["border-bottom-style"],rtl:["border-bottom-style"]},"border-block-end-width":{ltr:["border-bottom-width"],rtl:["border-bottom-width"]},"border-block-end":{ltr:["border-bottom"],rtl:["border-bottom"]},"border-block-start-color":{ltr:["border-top-color"],rtl:["border-top-color"]},"border-block-start-style":{ltr:["border-top-style"],rtl:["border-top-style"]},"border-block-start-width":{ltr:["border-top-width"],rtl:["border-top-width"]},"border-block-start":{ltr:["border-top"],rtl:["border-top"]},"border-block-style":{ltr:["border-top-style","border-bottom-style"],rtl:["border-top-style","border-bottom-style"]},"border-block-width":{ltr:["border-top-width","border-bottom-width"],rtl:["border-top-width","border-bottom-width"]},"border-block":{ltr:["border-top","border-bottom"],rtl:["border-top","border-bottom"]},"border-inline-color":{ltr:["border-left-color","border-right-color"],rtl:["border-left-color","border-right-color"]},"border-inline-end-color":{ltr:["border-right-color"],rtl:["border-left-color"]},"border-inline-end-style":{ltr:["border-right-style"],rtl:["border-left-style"]},"border-inline-end-width":{ltr:["border-right-width"],rtl:["border-left-width"]},"border-inline-end":{ltr:["border-right"],rtl:["border-left"]},"border-inline-start-color":{ltr:["border-left-color"],rtl:["border-right-color"]},"border-inline-start-style":{ltr:["border-left-style"],rtl:["border-right-style"]},"border-inline-start-width":{ltr:["border-left-width"],rtl:["border-right-width"]},"border-inline-start":{ltr:["border-left"],rtl:["border-right"]},"border-inline-style":{ltr:["border-left-style","border-right-style"],rtl:["border-left-style","border-right-style"]},"border-inline-width":{ltr:["border-left-width","border-right-width"],rtl:["border-left-width","border-right-width"]},"border-inline":{ltr:["border-left","border-right"],rtl:["border-left","border-right"]},"border-end-end-radius":{ltr:["border-bottom-right-radius"],rtl:["border-bottom-left-radius"]},"border-end-start-radius":{ltr:["border-bottom-left-radius"],rtl:["border-bottom-right-radius"]},"border-start-end-radius":{ltr:["border-top-right-radius"],rtl:["border-top-left-radius"]},"border-start-start-radius":{ltr:["border-top-left-radius"],rtl:["border-top-right-radius"]}};function Y(r){let e=r.parent;for(;e;)if("atrule"===e.type){if("keyframes"===e.name)return!0;e=e.parent}else e=e.parent;return!1}function Z(r){r=Object(r);const e=Boolean(r.preserve),t=!e&&"string"==typeof r.dir&&(/^rtl$/i.test(r.dir)?"rtl":"ltr"),o=r=>o=>{if(Y(o))return;const l=o.parent,n=U(o.value,!0);r(o,n,t,e),l.nodes.length||l.remove()},b=r=>o=>{if(Y(o))return;const l=o.parent,n=[o.value];r(o,n,t,e),l.nodes.length||l.remove()};return{postcssPlugin:"postcss-logical-properties",Declaration:{clear:o(B),float:o(B),resize:o(q),"text-align":o(Q),"block-size":o(N),"max-block-size":o(N),"min-block-size":o(N),"inline-size":o(N),"max-inline-size":o(N),"min-inline-size":o(N),margin:o(k),"margin-inline":o(I),"margin-inline-end":o(K),"margin-inline-start":o(J),"margin-block":o(F),"margin-block-end":o(H),"margin-block-start":o(G),inset:o(z),"inset-inline":o(I),"inset-inline-end":o(K),"inset-inline-start":o(J),"inset-block":o(F),"inset-block-end":o(H),"inset-block-start":o(G),padding:o(k),"padding-inline":o(I),"padding-inline-end":o(K),"padding-inline-start":o(J),"padding-block":o(F),"padding-block-end":o(H),"padding-block-start":o(G),"border-block":b(l),"border-block-color":o(l),"border-block-style":o(l),"border-block-width":o(l),"border-block-end":b(i),"border-block-end-color":o(i),"border-block-end-style":o(i),"border-block-end-width":o(i),"border-block-start":b(n),"border-block-start-color":o(n),"border-block-start-style":o(n),"border-block-start-width":o(n),"border-inline":b(d),"border-inline-color":o(d),"border-inline-style":o(d),"border-inline-width":o(d),"border-inline-end":b(a),"border-inline-end-color":o(a),"border-inline-end-style":o(a),"border-inline-end-width":o(a),"border-inline-start":b(p),"border-inline-start-color":o(p),"border-inline-start-style":o(p),"border-inline-start-width":o(p),"border-end-end-radius":o(f),"border-end-start-radius":o(f),"border-start-end-radius":o(f),"border-start-start-radius":o(f),"border-color":o(k),"border-style":o(k),"border-width":o(k),transition:o(W),"transition-property":o(W)}}}Z.postcss=!0,module.exports=Z;
Index: frontend/node_modules/postcss-logical/dist/index.mjs
===================================================================
--- frontend/node_modules/postcss-logical/dist/index.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/postcss-logical/dist/index.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+import r from"postcss";var t=(t,e)=>{const o="rule"===Object(t.parent).type?t.parent.cloneBefore({raws:{}}).removeAll():r.rule({selector:"&"});return o.selectors=o.selectors.map((r=>`${r}:dir(${e})`)),o};const e=/^border-(block|block-start|block-end|inline|inline-start|inline-end)(-(width|style|color))?$/i;var o=(r,t,o,l)=>{r.cloneBefore({prop:`border-top${r.prop.replace(e,"$2")}`,value:t[0]}),r.cloneBefore({prop:`border-bottom${r.prop.replace(e,"$2")}`,value:t[1]||t[0]}),a(r,l)},l=(r,t,o,l)=>{r.cloneBefore({prop:`border-top${r.prop.replace(e,"$2")}`}),a(r,l)},n=(r,t,o,l)=>{r.cloneBefore({prop:`border-bottom${r.prop.replace(e,"$2")}`}),a(r,l)},i=(r,o,l,n)=>{const i=()=>[r.cloneBefore({prop:`border-left${r.prop.replace(e,"$2")}`,value:o[0]}),r.cloneBefore({prop:`border-right${r.prop.replace(e,"$2")}`,value:o[1]||o[0]})],d=()=>[r.clone({prop:`border-right${r.prop.replace(e,"$2")}`,value:o[0]}),r.clone({prop:`border-left${r.prop.replace(e,"$2")}`,value:o[1]||o[0]})];return 1===o.length||2===o.length&&o[0]===o[1]||"ltr"===l?(i(),void a(r,n)):"rtl"===l?(d(),void a(r,n)):(t(r,"ltr").append(i()),t(r,"rtl").append(d()),void a(r,n))},d=(r,o,l,n)=>{const i=()=>r.cloneBefore({prop:`border-left${r.prop.replace(e,"$2")}`}),d=()=>r.cloneBefore({prop:`border-right${r.prop.replace(e,"$2")}`});return"ltr"===l?(i(),void a(r,n)):"rtl"===l?(d(),void a(r,n)):(t(r,"ltr").append(i()),t(r,"rtl").append(d()),void a(r,n))},p=(r,o,l,n)=>{const i=()=>r.cloneBefore({prop:`border-right${r.prop.replace(e,"$2")}`}),d=()=>r.cloneBefore({prop:`border-left${r.prop.replace(e,"$2")}`});return"ltr"===l?(i(),void a(r,n)):"rtl"===l?(d(),void a(r,n)):(t(r,"ltr").append(i()),t(r,"rtl").append(d()),void a(r,n))};function a(r,t){t||r.remove()}const b=/^(border-)(end-end|end-start|start-end|start-start)(-radius)$/i,c={"end-end":"bottom-right","end-start":"bottom-left","start-end":"top-right","start-start":"top-left"},s={"end-end":"bottom-left","end-start":"bottom-right","start-end":"top-left","start-start":"top-right"};var g=(r,e,o,l)=>"ltr"===o?(f(r),void h(r,l)):"rtl"===o?(u(r),void h(r,l)):(t(r,"ltr").append(f(r)),t(r,"rtl").append(u(r)),void h(r,l));function f(r){return r.cloneBefore({prop:r.prop.replace(b,((r,t,e,o)=>`${t}${c[e]}${o}`))})}function u(r){return r.cloneBefore({prop:r.prop.replace(b,((r,t,e,o)=>`${t}${s[e]}${o}`))})}function h(r,t){t||r.remove()}var v=r=>{const t=r.slice();return 4===t.length&&t[3]===t[1]&&t.pop(),3===t.length&&t[2]===t[0]&&t.pop(),2===t.length&&t[1]===t[0]&&t.pop(),t},m=(r,e,o,l)=>{if("logical"!==e[0])return null;const[,n,i,d,p]=e,a=v([n,p||i||n,d||n,i||n]),b=()=>r.cloneBefore({value:a.join(" ")});if(a.length<4||"ltr"===o)return b(),void k(r,l);const c=v([n,i||n,d||n,p||i||n]),s=()=>r.cloneBefore({value:c.join(" ")});if("rtl"===o)return s(),void k(r,l);t(r,"ltr").append(b()),t(r,"rtl").append(s()),k(r,l)};function k(r,t){t||r.remove()}var $=(r,e,o,l)=>/^inline-start$/i.test(r.value)?"ltr"===o?(B(r),void w(r,l)):"rtl"===o?(y(r),void w(r,l)):(t(r,"ltr").append(B(r)),t(r,"rtl").append(y(r)),void w(r,l)):/^inline-end$/i.test(r.value)?"ltr"===o?(y(r),void w(r,l)):"rtl"===o?(B(r),void w(r,l)):(t(r,"ltr").append(y(r)),t(r,"rtl").append(B(r)),void w(r,l)):void 0;function B(r){return r.cloneBefore({value:"left"})}function y(r){return r.cloneBefore({value:"right"})}function w(r,t){t||r.remove()}var j=(r,e,o,l)=>{if("logical"!==e[0])return r.cloneBefore({prop:"top",value:e[0]}),r.cloneBefore({prop:"right",value:e[1]||e[0]}),r.cloneBefore({prop:"bottom",value:e[2]||e[0]}),r.cloneBefore({prop:"left",value:e[3]||e[1]||e[0]}),void E(r,l);return!e[4]||e[4]===e[2]||"ltr"===o?(z(r,e),void E(r,l)):"rtl"===o?(x(r,e),void E(r,l)):(t(r,"ltr").append(z(r,e)),t(r,"rtl").append(x(r,e)),void E(r,l))};function z(r,t){return[r.cloneBefore({prop:"top",value:t[1]}),r.cloneBefore({prop:"left",value:t[2]||t[1]}),r.cloneBefore({prop:"bottom",value:t[3]||t[1]}),r.cloneBefore({prop:"right",value:t[4]||t[2]||t[1]})]}function x(r,t){return[r.cloneBefore({prop:"top",value:t[1]}),r.cloneBefore({prop:"right",value:t[2]||t[1]}),r.cloneBefore({prop:"bottom",value:t[3]||t[1]}),r.cloneBefore({prop:"left",value:t[4]||t[2]||t[1]})]}function E(r,t){t||r.remove()}var O=(r,t,e,o)=>/^block$/i.test(r.value)?(r.cloneBefore({value:"vertical"}),void A(r,o)):/^inline$/i.test(r.value)?(r.cloneBefore({value:"horizontal"}),void A(r,o)):void 0;function A(r,t){t||r.remove()}var D=/^(inset|margin|padding)(?:-(block|block-start|block-end|inline|inline-start|inline-end|start|end))$/i,P=/^inset-/i,q=(r,t,e)=>r.cloneBefore({prop:`${r.prop.replace(D,"$1")}${t}`.replace(P,""),value:e}),C=(r,t,e,o)=>{q(r,"-top",t[0]),q(r,"-bottom",t[1]||t[0]),K(r,o)},F=(r,t,e,o)=>{r.cloneBefore({prop:r.prop.replace(D,"$1-top").replace(P,"")}),K(r,o)},G=(r,t,e,o)=>{r.cloneBefore({prop:r.prop.replace(D,"$1-bottom").replace(P,"")}),K(r,o)},H=(r,e,o,l)=>{const n=()=>[q(r,"-left",e[0]),q(r,"-right",e[1]||e[0])],i=()=>[q(r,"-right",e[0]),q(r,"-left",e[1]||e[0])];return 1===e.length||2===e.length&&e[0]===e[1]||"ltr"===o?(n(),void K(r,l)):"rtl"===o?(i(),void K(r,l)):(t(r,"ltr").append(n()),t(r,"rtl").append(i()),void K(r,l))},I=(r,e,o,l)=>{const n=()=>q(r,"-left",r.value),i=()=>q(r,"-right",r.value);return"ltr"===o?(n(),void K(r,l)):"rtl"===o?(i(),void K(r,l)):(t(r,"ltr").append(n()),t(r,"rtl").append(i()),void K(r,l))},J=(r,e,o,l)=>{const n=()=>q(r,"-right",r.value),i=()=>q(r,"-left",r.value);return"ltr"===o?(n(),void K(r,l)):"rtl"===o?(i(),void K(r,l)):(t(r,"ltr").append(n()),t(r,"rtl").append(i()),void K(r,l))};function K(r,t){t||r.remove()}var L=/^(min-|max-)?(block|inline)-(size)$/i,M=(r,t,e,o)=>{r.cloneBefore({prop:r.prop.replace(L,((r,t,e)=>`${t||""}${"block"===e?"height":"width"}`))}),o||r.remove()},N=(r,e,o,l)=>/^start$/i.test(r.value)?"ltr"===o?(Q(r),void S(r,l)):"rtl"===o?(R(r),void S(r,l)):(t(r,"ltr").append(Q(r)),t(r,"rtl").append(R(r)),void S(r,l)):/^end$/i.test(r.value)?"ltr"===o?(R(r),void S(r,l)):"rtl"===o?(Q(r),void S(r,l)):(t(r,"ltr").append(R(r)),t(r,"rtl").append(Q(r)),void S(r,l)):void 0;function Q(r){return r.cloneBefore({value:"left"})}function R(r){return r.cloneBefore({value:"right"})}function S(r,t){t||r.remove()}function T(r,t){return U(r,/^\s$/,t)}function U(r,t,e){const o=[];let l="",n=!1,i=0,d=-1;for(;++d<r.length;){const p=r[d];"("===p?i+=1:")"===p?i>0&&(i-=1):0===i&&t.test(p)&&(n=!0),n?(e&&!l.trim()||o.push(e?l.trim():l),e||o.push(p),l="",n=!1):l+=p}return""!==l&&o.push(e?l.trim():l),o}var V=(r,e,o,l)=>{const n=[],i=[];var d,p;return(d=r.value,U(d,/^,$/,p)).forEach((r=>{let t=!1;T(r).forEach(((r,e,o)=>{r in W&&(t=!0,W[r].ltr.forEach((r=>{const t=o.slice();t.splice(e,1,r),n.length&&!/^,$/.test(n[n.length-1])&&n.push(","),n.push(t.join(""))})),W[r].rtl.forEach((r=>{const t=o.slice();t.splice(e,1,r),i.length&&!/^,$/.test(i[i.length-1])&&i.push(","),i.push(t.join(""))})))})),t||(n.push(r),i.push(r))})),n.length&&"ltr"===o?(l&&r.cloneBefore({}),void(r.value=n.join(""))):i.length&&"rtl"===o?(l&&r.cloneBefore({}),void(r.value=i.join(""))):n.join("")!==i.join("")?(t(r,"ltr").append(r.cloneBefore({value:n.join("")})),t(r,"rtl").append(r.cloneBefore({value:i.join("")})),void function(r,t){t||r.remove()}(r,l)):void 0};const W={"block-size":{ltr:["height"],rtl:["height"]},"inline-size":{ltr:["width"],rtl:["width"]},"margin-block-end":{ltr:["margin-bottom"],rtl:["margin-bottom"]},"margin-block-start":{ltr:["margin-top"],rtl:["margin-top"]},"margin-block":{ltr:["margin-top","margin-bottom"],rtl:["margin-top","margin-bottom"]},"margin-inline-end":{ltr:["margin-right"],rtl:["margin-left"]},"margin-inline-start":{ltr:["margin-left"],rtl:["margin-right"]},"margin-inline":{ltr:["margin-left","margin-right"],rtl:["margin-left","margin-right"]},"inset-block-end":{ltr:["bottom"],rtl:["bottom"]},"inset-block-start":{ltr:["top"],rtl:["top"]},"inset-block":{ltr:["top","bottom"],rtl:["top","bottom"]},"inset-inline-end":{ltr:["right"],rtl:["left"]},"inset-inline-start":{ltr:["left"],rtl:["right"]},"inset-inline":{ltr:["left","right"],rtl:["left","right"]},inset:{ltr:["top","right","bottom","left"],rtl:["top","right","bottom","left"]},"padding-block-end":{ltr:["padding-bottom"],rtl:["padding-bottom"]},"padding-block-start":{ltr:["padding-top"],rtl:["padding-top"]},"padding-block":{ltr:["padding-top","padding-bottom"],rtl:["padding-top","padding-bottom"]},"padding-inline-end":{ltr:["padding-right"],rtl:["padding-left"]},"padding-inline-start":{ltr:["padding-left"],rtl:["padding-right"]},"padding-inline":{ltr:["padding-left","padding-right"],rtl:["padding-left","padding-right"]},"border-block-color":{ltr:["border-top-color","border-bottom-color"],rtl:["border-top-color","border-bottom-color"]},"border-block-end-color":{ltr:["border-bottom-color"],rtl:["border-bottom-color"]},"border-block-end-style":{ltr:["border-bottom-style"],rtl:["border-bottom-style"]},"border-block-end-width":{ltr:["border-bottom-width"],rtl:["border-bottom-width"]},"border-block-end":{ltr:["border-bottom"],rtl:["border-bottom"]},"border-block-start-color":{ltr:["border-top-color"],rtl:["border-top-color"]},"border-block-start-style":{ltr:["border-top-style"],rtl:["border-top-style"]},"border-block-start-width":{ltr:["border-top-width"],rtl:["border-top-width"]},"border-block-start":{ltr:["border-top"],rtl:["border-top"]},"border-block-style":{ltr:["border-top-style","border-bottom-style"],rtl:["border-top-style","border-bottom-style"]},"border-block-width":{ltr:["border-top-width","border-bottom-width"],rtl:["border-top-width","border-bottom-width"]},"border-block":{ltr:["border-top","border-bottom"],rtl:["border-top","border-bottom"]},"border-inline-color":{ltr:["border-left-color","border-right-color"],rtl:["border-left-color","border-right-color"]},"border-inline-end-color":{ltr:["border-right-color"],rtl:["border-left-color"]},"border-inline-end-style":{ltr:["border-right-style"],rtl:["border-left-style"]},"border-inline-end-width":{ltr:["border-right-width"],rtl:["border-left-width"]},"border-inline-end":{ltr:["border-right"],rtl:["border-left"]},"border-inline-start-color":{ltr:["border-left-color"],rtl:["border-right-color"]},"border-inline-start-style":{ltr:["border-left-style"],rtl:["border-right-style"]},"border-inline-start-width":{ltr:["border-left-width"],rtl:["border-right-width"]},"border-inline-start":{ltr:["border-left"],rtl:["border-right"]},"border-inline-style":{ltr:["border-left-style","border-right-style"],rtl:["border-left-style","border-right-style"]},"border-inline-width":{ltr:["border-left-width","border-right-width"],rtl:["border-left-width","border-right-width"]},"border-inline":{ltr:["border-left","border-right"],rtl:["border-left","border-right"]},"border-end-end-radius":{ltr:["border-bottom-right-radius"],rtl:["border-bottom-left-radius"]},"border-end-start-radius":{ltr:["border-bottom-left-radius"],rtl:["border-bottom-right-radius"]},"border-start-end-radius":{ltr:["border-top-right-radius"],rtl:["border-top-left-radius"]},"border-start-start-radius":{ltr:["border-top-left-radius"],rtl:["border-top-right-radius"]}};function X(r){let t=r.parent;for(;t;)if("atrule"===t.type){if("keyframes"===t.name)return!0;t=t.parent}else t=t.parent;return!1}function Y(r){r=Object(r);const t=Boolean(r.preserve),e=!t&&"string"==typeof r.dir&&(/^rtl$/i.test(r.dir)?"rtl":"ltr"),a=r=>o=>{if(X(o))return;const l=o.parent,n=T(o.value,!0);r(o,n,e,t),l.nodes.length||l.remove()},b=r=>o=>{if(X(o))return;const l=o.parent,n=[o.value];r(o,n,e,t),l.nodes.length||l.remove()};return{postcssPlugin:"postcss-logical-properties",Declaration:{clear:a($),float:a($),resize:a(O),"text-align":a(N),"block-size":a(M),"max-block-size":a(M),"min-block-size":a(M),"inline-size":a(M),"max-inline-size":a(M),"min-inline-size":a(M),margin:a(m),"margin-inline":a(H),"margin-inline-end":a(J),"margin-inline-start":a(I),"margin-block":a(C),"margin-block-end":a(G),"margin-block-start":a(F),inset:a(j),"inset-inline":a(H),"inset-inline-end":a(J),"inset-inline-start":a(I),"inset-block":a(C),"inset-block-end":a(G),"inset-block-start":a(F),padding:a(m),"padding-inline":a(H),"padding-inline-end":a(J),"padding-inline-start":a(I),"padding-block":a(C),"padding-block-end":a(G),"padding-block-start":a(F),"border-block":b(o),"border-block-color":a(o),"border-block-style":a(o),"border-block-width":a(o),"border-block-end":b(n),"border-block-end-color":a(n),"border-block-end-style":a(n),"border-block-end-width":a(n),"border-block-start":b(l),"border-block-start-color":a(l),"border-block-start-style":a(l),"border-block-start-width":a(l),"border-inline":b(i),"border-inline-color":a(i),"border-inline-style":a(i),"border-inline-width":a(i),"border-inline-end":b(p),"border-inline-end-color":a(p),"border-inline-end-style":a(p),"border-inline-end-width":a(p),"border-inline-start":b(d),"border-inline-start-color":a(d),"border-inline-start-style":a(d),"border-inline-start-width":a(d),"border-end-end-radius":a(g),"border-end-start-radius":a(g),"border-start-end-radius":a(g),"border-start-start-radius":a(g),"border-color":a(m),"border-style":a(m),"border-width":a(m),transition:a(V),"transition-property":a(V)}}}Y.postcss=!0;export{Y as default};
Index: frontend/node_modules/postcss-logical/package.json
===================================================================
--- frontend/node_modules/postcss-logical/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/postcss-logical/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,79 @@
+{
+  "name": "postcss-logical",
+  "version": "5.0.4",
+  "description": "Use logical properties and values in CSS",
+  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
+  "license": "CC0-1.0",
+  "homepage": "https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-logical#readme",
+  "bugs": "https://github.com/csstools/postcss-plugins/issues",
+  "main": "dist/index.cjs",
+  "module": "dist/index.mjs",
+  "exports": {
+    ".": {
+      "import": "./dist/index.mjs",
+      "require": "./dist/index.cjs",
+      "default": "./dist/index.mjs"
+    }
+  },
+  "files": [
+    "CHANGELOG.md",
+    "LICENSE.md",
+    "README.md",
+    "dist"
+  ],
+  "scripts": {
+    "build": "rollup -c ../../rollup/default.js",
+    "clean": "node -e \"fs.rmSync('./dist', { recursive: true, force: true });\"",
+    "lint": "eslint ./src --ext .js --ext .ts --ext .mjs --no-error-on-unmatched-pattern",
+    "prepublishOnly": "npm run clean && npm run build && npm run test",
+    "stryker": "stryker run --logLevel error",
+    "test": "postcss-tape --ci && npm run test:exports",
+    "test:exports": "node ./test/_import.mjs && node ./test/_require.cjs"
+  },
+  "engines": {
+    "node": "^12 || ^14 || >=16"
+  },
+  "devDependencies": {
+    "postcss": "^8.3.6",
+    "postcss-tape": "^6.0.1"
+  },
+  "peerDependencies": {
+    "postcss": "^8.4"
+  },
+  "keywords": [
+    "postcss",
+    "css",
+    "postcss-plugin",
+    "logical",
+    "flow",
+    "relative",
+    "property",
+    "properties",
+    "values",
+    "ltr",
+    "rtl",
+    "dir",
+    "directions",
+    "directional",
+    "inline",
+    "block",
+    "start",
+    "end",
+    "align",
+    "border",
+    "clear",
+    "float",
+    "margin",
+    "padding",
+    "size",
+    "text"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/csstools/postcss-plugins.git",
+    "directory": "plugins/postcss-logical"
+  },
+  "volta": {
+    "extends": "../../package.json"
+  }
+}
